Res - 2009夏学期C语言上机练习参考答案汇总 下载本文

夏学期C程序设计上机练习参考答案

}

}; {0,31,28,31,30,31,30,31,31,30,31,30,31}, {0,31,29,31,30,31,30,31,31,30,31,30,31} col=0; for(j=1;ja[row][col]) col=j; } flag=1; for(i=0;ia[i][col]) { flag=0; break; /* 只要当前行的最大值不leap=(year%4==0&&year0!=0||year@0==0); for(k=1;k

输入一个正整数 repeat (0

输入 1 个正整数 n(1≤n≤6)和 n 阶方阵 a 中的元素,假设方阵 a 最多有1个鞍点,如果找到 a 的鞍点, 就输出其下标, 否则,输出\。鞍点的元素值在该行上最大, 在该列上最小。

输入输出示例:括号内为说明 输入:

2 (repeat=2) 4 (n=4) 1 7 4 1 4 8 3 6 1 6 1 2 0 7 8 9 2 (n=2) 1 7 4 1 输出: a[2][1] = 6 NO

#include \int main(void) { int flag, i, j, k, row, col, n; int a[6][6]; int repeat, ri; scanf(\ for(ri = 1; ri <= repeat; ri++){ scanf(\ for(i = 0; i < n; i++) for(j = 0; j < n; j++) scanf(\ for(row=0;row

70031 将字符串逆序存放

输入一个以回车结束的字符串(少于80个字符),将它的内容逆序输出。如\的逆序为\。 输入输出示例:括号内为说明 输入:

Welcome to you! 输出:

!uoy ot emocleW 思路: 若输入: 0 1 2 3 4 5 要输出 5 4 3 2 1 0 即第k个字符的位置变换成:n-k-1。由于两个位置上的值是互换的,所以只要对其中的一半数据操作就可以了。 #include int main(void) { int i, j, temp; = %d\\n\row, 9

夏学期C程序设计上机练习参考答案

char str[80]; i = 0; int repeat, ri; scanf(\ getchar(); for(ri = 1; ri <= repeat; ri++){ cc = getchar(); getchar(); /* 用于抵消输入查询字符后的回车 */ i = 0; while((ch = getchar()) != '\\n'){ str[i++] = ch; } str[i] = 0; if(flag) printf(\ else printf(\ } flag=0; for(i=0;str[i] != '\\0';i++){ } if(str[i]==cc){ } flag++; index=i; while((str[i] = getchar( )) != '\\n') i++; str[i] = 0; /* 使用\\0 的必要性*/ for (j=0;j

70032 查找字符

输入一个正整数repeat (0

输入一个字符,再输入一个以回车结束的字符串(少于80个字符),在字符串中查找该字符,如果找到,输出该字符在字符串中所对应的最大下标 (下标从0开始);否则输出\Found\。

输入输出示例:括号内为说明 输入: 2

(repeat=2)

}

70033 统计大写辅音字母

输入一个正整数 repeat (0

输入一个以回车结束的字符串(少于80个字符),统计并输

m (字符'm')

programming (字符串\a 1234 输出: index = 7 最大下标是7) Not Found

#include \#define MAXLEN 80 int main(void) { char cc, ch; char str[MAXLEN]; int count, flag, i, index; (\中没有'a')

('m'在\中对应的

(字符'a') (字符串\

出其中大写辅音字母的个数。大写辅音字母:除'A', 'E', 'I', 'O', 'U'以外的大写字母。 输入输出示例:括号内为说明 输入: 2

(repeat=2)

HELLO group 输出:

count = 3 (\中有3个大写辅音字母) count = 0 (\中没有大写辅音字母)

10

夏学期C程序设计上机练习参考答案

#include \ #define MAXLEN 80 int main(void) { char ch; char str[MAXLEN]; int count, i; int repeat, ri; scanf(\ getchar(); for(ri = 1; ri <= repeat; ri++){ i = 0; while((ch = getchar()) != '\\n'){ str[i++]=ch; } str[i] = 0; i=0; count=0; while(str[i]){ if(str[i]<='Z'&&str[i]>='A') switch(str[i]){ case 'A': A Z B Y C X D W ?? X C Y B Z A 输入输出示例:括号内为说明 输入: 2 (repeat=2) A flag of USA 1+2=3 输出: After replaced: Z flag of FHZ After replaced: 1+2=3 思路:A-Z, B-Y, ... Z-A, 左右字符的ASCII值的和都是一样的,都为'A'+'Z', 设左字符为变量x, 右字符的ASCII值就是 'A'+'Z'-x #include \#include \#define MAXLEN 80 int main(void) { char ch; char str[MAXLEN]; int i; int repeat, ri; break; scanf(\ getchar(); for(ri = 1; ri <= repeat; ri++){ i = 0; while((ch = getchar()) != '\\n'){ str[i] = ch; i++; } case 'E': case 'I': case 'O': case 'U': break; default: count++; } i++;} printf(\ } } 70034 字符串替换 输入一个正整数 repeat (0='A'&&str[i]<='Z') str[i]='A'+'Z'-str[i]; 11

夏学期C程序设计上机练习参考答案

for(i = 0; str[i] != 0; i++) putchar(str[i]); putchar('\\n'); } }

70035 将十六进制字符串转换为十进制整数

输入一个正整数 repeat (0

输入一个以回车结束的字符串(少于80个字符),滤去所有的非十六进制字符后,组成一个新字符串(十六进制形式),然后将其转换为十进制数后输出。 输入输出示例:括号内为说明 输入: 2 10 +A 输出: Dec = 16 Dec = 10

#include \#include \#define MAXLEN 80 int main(void) { char ch; char str[MAXLEN], num[MAXLEN]; int i, k; int repeat, ri; long number; scanf(\ getchar(); for(ri = 1; ri <= repeat; ri++){ i = 0; while((ch = getchar()) != '\\n'){ str[i]=ch; i++; } str[i] = 0; /* 输入字符串 */ number=0; for(i=0;str[i]!='\\0';i++){ (repeat=2)

if(str[i]>='0'&&str[i]<='9') number=number*16+str[i]-'0'; else if(str[i]>='A'&&str[i]<='F') number=number*16+str[i]-'A'+10; else if(str[i]>='a'&&str[i]<='f') number=number*16+str[i]-'a'+10; } /* 16进制字符 0-9, A-F, a-f */ printf(\ } }

70036 将十进制字符串转换为十进制整数

输入一个正整数 repeat (0

输入一个以回车结束的字符串(少于80个字符),把字符串中的所有数字字符('0'~'9')转换为整数,去掉其他字符。例如,字符串\转换为整数后是356。 输入输出示例:括号内为说明 输入: 2 82jeep5 free 输出: 825 0

#include #include int main(void) { char str[80]; int i, s; int repeat, ri; scanf(\ getchar(); for(ri = 1; ri <= repeat; ri++){ i = 0; while((str[i] = getchar( )) != '\\n') i++; (repeat=2)

12