目录
3.下面的程序关系表达式过于复杂,而且还有些错误,请简化并改正
10.重写复习题9,但这次不能使用continue和goto语句
1.编写一个程序读取输入,读到#字符停止,然后报告读取的空格数、换行符数和所有其他字符的数量
2.编写一个程序读取输入,读到#字符停止。程序要打印每个输入的字符以及对应的ASCII码(十进制)。一行打印8个字符。建议:使用字符计数和求模运算符(%)在每8个循环周期时打印一个换行符
3.编写一个程序,读取整数直到用户输入 0。输入结束后,程序应报告用户输入的偶数(不包括 0)个数、这些偶数的平均值、输入的奇数个数及其奇数的平均值
4.使用if else语句编写一个程序读取输入,读到#停止。用感叹号替换句号,用两个感叹号替换原来的感叹号,最后报告进行了多少次替换
7.编写一个程序,提示用户输入一周工作的小时数,然后打印工资总额、税金和净收入。做如下假设:
c.税率: 前300美元为15% 续150美元为20% 余下的为25%
Enter the number corresponding to the desired pay rate or action:
*****************************************************************
9.编写一个程序,只接受正整数输入,然后显示所有小于或等于该数的素数
10.1988年的美国联邦税收计划是近代最简单的税收方案。它分为4个类别,每个类别有两个等级。 下面是该税收计划的摘要(美元数为应征税的收入):
超过20磅的订单在14美元的基础上每续重1磅增加0.5美元。
复习题
1.判断下列表达式是true还是false
a. 100 > 3 && 'a'>'c'
b. 100 > 3 || 'a'>'c'
c. !(100>3)
a. false
b. true
c. false
2.根据下列描述的条件,分别构造一个表达式:
a number等于或大于90,但是小于100
b ch不是字符q或k
c number在1~9之间(包括1和9),但不是5
d number不在1~9之间
a. 90 <= number && number < 100
b. ch != 'q' && ch != 'k'
c. number >= 1 && number <= 9 && number != 5
d. number < 1 && number > 9
3.下面的程序关系表达式过于复杂,而且还有些错误,请简化并改正
#include <stdio.h>
int main(void) /* 1 */ { /* 2 */
int weight, height; /* weight以磅为单位,height以英寸为单位 *//* 4 */
scanf("%d , weight, height); /* 5 */
if (weight < 100 && height > 64) /* 6 */
if (height >= 72) /* 7 */
printf("You are very tall for your weight.\n");
else if (height < 72 &&> 64) /* 9 */
printf("You are tall for your weight.\n");/* 10 */
else if (weight > 300 && !(weight <= 300) /* 11 */
&& height < 48) /* 12 */
if (!(height >= 48)) /* 13 */
printf(" You are quite short for your weight.\n");
else /* 15 */
printf("Your weight is ideal.\n"); /* 16 */ /* 17 */
return 0;
}
#include <stdio.h>
int main(void)
{
int weight, height; /* weight以磅为单位,height以英寸为单位 */
scanf("%d %d", &weight, &height);
if (weight < 100 && height > 64)
if (height >= 72)
printf("You are very tall for your weight.\n");
else /* 9 */
printf("You are tall for your weight.\n");
else if (weight > 300 && height < 48)
printf(" You are quite short for your weight.\n");
else
printf("Your weight is ideal.\n");
return 0;
}
4.下列个表达式的值是多少
a.5 > 2
b.3 + 4 > 2 && 3 < 2
c.x >= y || y > x
d.d = 5 + ( 6 > 2 )
e.'X' > 'T' ? 10 : 5
f.x > y ? y > x : x > y
a. 1 b. 0 c. 1 d. 6 e. 10 f. 0
5.下面的程序将打印什么
#include <stdio.h>
int main(void)
{
int num;
for (num = 1; num <= 11; num++)
{
if (num % 3 == 0)
putchar('$');
else
putchar('*');
putchar('#');
putchar('%');
}
putchar('\n');
return 0;
}
*#%*#%$#%*#%*#%$#%*#%*#%$#%*#%*#%
6.下面的程序将打印什么
#include <stdio.h>
int main(void)
{
int i = 0;
while (i < 3)
{
switch (i++)
{
case 0:
printf("fat ");
case 1:
printf("hat ");
case 2:
printf("cat ");
default:
printf("Oh no!");
}
putchar('\n');
}
return 0;
}
fat hat cat Oh no!
hat cat Oh no!
cat Oh no!
7.下面的程序有哪些错误
#include <stdio.h>
int main(void)
{
char ch;
int lc = 0; // 统计小写字母
int uc = 0; // 统计大写字母
int oc = 0; // 统计其他字母
while ((ch = getchar()) != '#')
{
if ('a' <= ch >= 'z')
lc++;
else if (!(ch < 'A') || !(ch > 'Z')
uc++;
oc++;
}
printf(%d lowercase, %d uppercase, %d other, lc, uc, oc);
return 0;
}
#include <stdio.h>
int main(void)
{
char ch;
int lc = 0; // 统计小写字母
int uc = 0; // 统计大写字母
int oc = 0; // 统计其他字母
while ((ch = getchar()) != '#')
{
if ('a' <= ch && ch <= 'z')
lc++;
else if (!(ch < 'A') && !(ch > 'Z')
uc++;
else:
oc++;
}
printf("%d lowercase, %d uppercase, %d other", lc, uc, oc);
return 0;
}
8.下面的程序将打印什么
#include <stdio.h>
int main(void)
{
int age = 20;
while (age++ <= 65)
{
if ((age % 20) == 0) /* age是否能被20整除? */
printf("You are %d.Here is a raise.\n", age);
if (age = 65)
printf("You are %d.Here is your gold watch.\n", age);
}
return 0;
}
重复打印You are 65.Here is your gold watch.
【每一次赋值都会重置age为65】
9.给定下面的输入时,以下程序将打印什么
q
c
h
b
#include <stdio.h>
int main(void)
{
char ch;
while ((ch = getchar()) != '#')
{
if (ch == '\n')
continue;
printf("Step 1\n");
if (ch == 'c')
continue;
else if (ch == 'b')
break;
else if (ch == 'h')
goto laststep;
printf("Step 2\n");
laststep:
printf("Step 3\n");
}
printf("Done\n");
return 0;
}
Step 1
Step 2
Step 3
Step 1
Step 1
Step 3
Step 1
Done
10.重写复习题9,但这次不能使用continue和goto语句
#include <stdio.h>
int main(void)
{
char ch;
while ((ch = getchar()) != '#')
{
if (ch == '\n')
else
{
printf("Step 1\n");
if (ch == 'c')
else
{
if (ch == 'b')
break;
else if (ch == 'h')
else
printf("Step 2\n");
printf("Step 3\n");
}
}
}
printf("Done\n");
return 0;
}
编程练习
1.编写一个程序读取输入,读到#字符停止,然后报告读取的空格数、换行符数和所有其他字符的数量
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
char ch;
int kg = 0, hh = 0, qt = 0;
while ((ch = getchar()) != '#')
{
switch(ch)
{
case ' ':
kg++;
break;
case '\n':
hh++;
break;
default:
qt++;
}
}
printf("%-5d %-5d %-5d\n", kg, hh, qt);
return 0;
}
2.编写一个程序读取输入,读到#字符停止。程序要打印每个输入的字符以及对应的ASCII码(十进制)。一行打印8个字符。建议:使用字符计数和求模运算符(%)在每8个循环周期时打印一个换行符
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char ch;
int t = 1;
while ((ch = getchar()) != '#')
{
putchar(ch);
printf("%d ", ch);
if(!(t++ % 8))
{
printf("\n");
}
}
return 0;
}
3.编写一个程序,读取整数直到用户输入 0。输入结束后,程序应报告用户输入的偶数(不包括 0)个数、这些偶数的平均值、输入的奇数个数及其奇数的平均值
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char ch;
int os = 0, js = 0, oss = 0, jss = 0;
double osa = 0.0, jsa = 0.0;
int a;
while(scanf("%d", &a) && a)
{
if(a % 2)
{
js++;
jss += a;
}
else
{
os++;
oss += a;
}
}
if(os)
{
osa = double(oss) / double(os);
}
if(j