題目:設計函式,根據ASCII碼求二維字符陣列的最大值和最小值。要求:用全域變數Max和Min來存盤要求的最大值和最小值;
#include<stdio.h>
char Max, Min;
int main()
{
void swap(char a[80][80]);
int i, j;
char a[80][80];
for(i=0;i<80;i++)
for (j = 0; j < 80;j++)
{
scanf("%c\n", &a[i][j]);
}
printf("Max=%c Min=%c", Max, Min);
return 0;
}
void swap(char a[80][80])
{
int i, j;
Max = a[0][0];
Min = a[0][0];
for(i=0;i<80;i++)
for (j = 0; i < 80 j++)
{
if (Max < a[i][j])Max = a[i][j];
if (Min > a[i][j])Min = a[i][j];
}
}
編譯器沒報錯,但是輸入字符按回車一直沒輸出是為什么啊
uj5u.com熱心網友回復:
供參考:
#include<stdio.h>
char Max, Min;
int main()
{
void swap(char a[80][80]);
int i, j;
char a[80][80];
for(i=0;i<2;i++)
for (j = 0;j < 2;j++)
{
scanf(" %c", &a[i][j]);//scanf("%c\n", &a[i][j]);
}
swap(a);//函式呼叫
printf("Max=%c Min=%c\n", Max, Min);
return 0;
}
void swap(char a[80][80])
{
int i, j;
Max = a[0][0];
Min = a[0][0];
for(i=0;i<2;i++)
for (j = 0;j < 2;j++) //for (j = 0;i < 2;j++)
{
if (Max < a[i][j]) Max = a[i][j];
if (Min > a[i][j]) Min = a[i][j];
}
}
uj5u.com熱心網友回復:
忘記改回80了:
#include<stdio.h>
char Max, Min;
int main()
{
void swap(char a[80][80]);
int i, j;
char a[80][80];
for(i=0;i<80;i++)
for (j = 0;j < 80;j++)
{
scanf(" %c", &a[i][j]);//scanf("%c\n", &a[i][j]);
}
swap(a);//函式呼叫
printf("Max=%c Min=%c\n", Max, Min);
return 0;
}
void swap(char a[80][80])
{
int i, j;
Max = a[0][0];
Min = a[0][0];
for(i=0;i<80;i++)
for (j = 0;j < 80;j++) //for (j = 0;i < 2;j++)
{
if (Max < a[i][j]) Max = a[i][j];
if (Min > a[i][j]) Min = a[i][j];
}
}
uj5u.com熱心網友回復:
謝謝,不過不知道為什么改回80后不行,就是2的話就可以
uj5u.com熱心網友回復:
改回80的話,你必須一次性輸入80*80=6400個字符,才符合你輸入的要求,你輸入了這么多?
uj5u.com熱心網友回復:
忘記改回80了:
#include<stdio.h>
char Max, Min;
int main()
{
void swap(char a[80][80]);
int i, j;
char a[80][80];
for(i=0;i<80;i++)
for (j = 0;j < 80;j++)
{
scanf(" %c", &a[i][j]);//scanf("%c\n", &a[i][j]);
}
swap(a);//函式呼叫
printf("Max=%c Min=%c\n", Max, Min);
return 0;
}
void swap(char a[80][80])
{
int i, j;
Max = a[0][0];
Min = a[0][0];
for(i=0;i<80;i++)
for (j = 0;j < 80;j++) //for (j = 0;i < 2;j++)
{
if (Max < a[i][j]) Max = a[i][j];
if (Min > a[i][j]) Min = a[i][j];
}
}
謝謝,不過不知道為什么改回80后不行,就是2的話就可以
改回80的話,你必須一次性輸入80*80=6400個字符,才符合你輸入的要求,你輸入了這么多?
這樣啊,那請問有什么辦法可以不限制輸入字符的多少也能比較嗎
uj5u.com熱心網友回復:
那就不要用二維陣列來存盤,弄個字串或檔案更簡單方便。
uj5u.com熱心網友回復:
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
char Max, Min;
void swap(char *a,int w)
{
int i, j;
Max = a[0];
Min = a[0];
for (i=0;i<w;i++)
for (j=0;j<w;j++) {
if (Max < a[i*w+j]) Max = a[i*w+j];
if (Min > a[i*w+j]) Min = a[i*w+j];
}
}
int main()
{
int i, j;
char *a;
int w;
while (1) {
printf("Input w(2<=w<=10000):");fflush(stdout);
rewind(stdin);
if (1==scanf("%d",&w)) {
if (2<=w && w<=10000) break;
}
}
a=(char *)malloc(w*w);
if (NULL==a) {
printf("Can not malloc(%d) bytes!\n",w*w);
return 1;
}
for (i=0;i<w;i++)
for (j=0;j<w;j++) {
scanf(" %c", &a[i*w+j]);
}
swap(a,w);
free(a);
眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......
值傳遞不會改變本身,參考傳遞(如果傳遞的值需要實體化到堆里)如果發生修改了會改變本身。 1.基本資料型別都是值傳遞 package com.example.basic; public class Test { public static void main(String[] args) { int ......