C程序设计 2009春学期 上机练习M2-M8参考答案
字符的个数)
#include int main(void) { char c; int blank, digit, letter, other; int ri, repeat; scanf(\ getchar(); for(ri = 1; ri<=repeat; ri++) { c = getchar(); letter=blank=digit=other=0; while (c!='\\n') { if ((c>='a'&&c<='z')||(c>='A'&&c<='Z')) letter++; else if (c==' ') blank++; else if(c>='0'&&c<='9') digit++; else other++; c=getchar(); 90=37+53 92=3+89 94=5+89 96=7+89 98=19+79 100=3+97 #include int prime(int m) { } int main(void) { int count, i, m, n, number; scanf(\n); if(m % 2 != 0) m = m + 1; int i, ifPrime=0; if(m==1) return 0; for(i=2;i<=m/2;i++) { } if(i>m/2) ifPrime=1; if(m%i==0) break; return ifPrime; } printf(\, blank, digitif(m >= 6) { , other); } } 60006 验证歌德巴赫猜想 程序填空,不要改变与输入输出有关的语句。 验证哥德巴赫猜想:任何一个大于6的偶数均可表示为两个素数之和。例如6=3+3,8=3+5,…,18=7+11。素数就是只能被1和自身整除的正整数,1不是素数,2是素数。 输入两个正整数 m 和 n(6<=m<=n<=100),将 m 到 n 之间的偶数表示成两个素数之和,打印时一行打印5组。 要求定义并调用函数 prime(m) 判断m是否为素数,当m为素数时返回1,否则返回0,函数形参 m 的类型是int,函数类型是int。 输出使用语句:printf(\= M + M \number, i, number - i); 输入输出示例:括号内为说明 输入: 89 100(m=89, n=100) 输出:
for(number=m;number<=n;number=number+2) { for(i=1;i<=number/2;i++) if( prime(i) { && count=0; prime(number-i) ) { printf(\\number, i, number-i); } }
60007 使用函数输出整数的逆序数
} } } count++; if(count%5==0) printf(\ break; 31
C程序设计 2009春学期 上机练习M2-M8参考答案
程序填空,不要改变与输入输出有关的语句。 输入2个整数,分别将其逆向输出。
要求定义并调用函数 fun(n),它的功能是返回 n 的逆向值,函数形参 n 的类型是int,函数类型是int。例如,fun(123)的返回值是321。
输入输出示例:括号内是说明 输入: 123 -910 输出:
123的逆向是321 -910的逆向是-19
#include int fun(int n); int main(void) { int m1,m2; scanf(\ printf(\的逆向是%d\\n\ printf(\的逆向是%d\\n\ } /* 思路:例如 12345 = 1*10^4 + 2 * 10^3 + 3* 10^2 + 4 * 10 ^1+ 1 + 5 * 10^0 1)n和n=n/10探测各个位 2)逆序数可用n的每个位上的数×10(即10进制数位左移1位),累计相加, 累加和问题, 用循环语句 */ int fun(int n) { int a, num=0; /*设置一个累加和的变量 */ while(n) { a = n; num=num*10 + a; n=n/10; } return num; }
60009 统计单词
程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (02 (repeat=2)
Let's go to room 209. Programming is fun 输出
count = 5 (\ go to room 209.\中有5个单词) count = 3 (\ Programming is fun\中有3个单词)
#include int main(void) { char c; int count, word; int repeat, ri; scanf(\ getchar(); for(ri = 1; ri <= repeat; ri++){ c = getchar(); count = 0; while(c==' ') c=getchar(); while (c!='\\n') { while (c!=' ' && c!='\\n') c=getchar(); } }
60062 简单计算器
程序填空,不要改变与输入输出有关的语句。
输入一个正整数 repeat (0 } printf(\count++; while (c==' ' && c!='\\n') c=getchar(); 32
C程序设计 2009春学期 上机练习M2-M8参考答案
算:
模拟简单运算器的工作:输入一个算式(没有空格),遇等号 \说明输入结束,输出运算结果。
假设计算器只能进行加、减、乘、除运算,运算数和结果都是整数,4种运算符的优先级相同,按从左到右的顺序计算。 输入输出示例:括号内是说明 输入
2 (repeat=2) 15+2/3= 1+2*10-10/2= 输出 5 10
程序中使用了operator作为变量,这是VC++的关键字,但不是TC的,要避免这种情况的发生,可以将关键字的颜色作标记,编程时就可避免。一般VC++缺省环境下关键字颜色会与一般的变量显示不同。 #include int main(void) { char c; int operand1, operand2, res; int repeat, ri; scanf(\ for(ri = 1; ri <= repeat; ri++) scanf(\ c=getchar(); res=operand1; { }
while(c != '=') { scanf(\ switch(c) { case'+':res=res+operand2;break; case'-':res=res-operand2;break; case'*':res=res*operand2;break; case'/':res=res/operand2;break; } c= getchar(); } printf(\ } 33