本人自己初学C语言,如果有错误,请帮忙指出,多多担待。谢谢!
运行环境为DevCpp 😃
第七章共十一道题。
第一题:
/*
编写一个程序读取输入,读到#字符停止,
然后报告读取的空格数、换行数和其他所有字符的数量
*/
#include<stdio.h>
int main(){
char str=0;
int space=0;
int enter=0;
int ch=0;
int i;
printf("Please input what you want to write:\n");
//scanf("%c",&str);
while((str=getchar())!='#'){
if(str==' '){
space++;
}else if(str=='\n'){
enter++;
}else{
ch++;
}
}
printf("\n\n\n");
printf("Input space %d times.\n",space);
printf("Input enter %d times.\n",enter);
printf("Input other words %d times.\n",ch);
printf("END!\n");
return 0;
}
运行结果:
Please input what you want to write:
抗裂砂浆领放卡看到了考虑不车 klskk
sdjaklj 'ld'a ,s;ada[]
a;sld;akd[acp,zx;cc
sd;la'lda'd
d;
s;c,;x'c.#,ds'dplf[pdl[s
Input space 9 times.
Input enter 5 times.
Input other words 94 times.
END!
--------------------------------
Process exited after 39.9 seconds with return value 0
请按任意键继续. . .
第二题:
/*
编写一个程序读取输入,读到#字符停止。
程序要打印每个输入的字符以及对应的ASCII码(十进制),一行打印8个"字符-ASCII码"
建议:使用字符计数和求模运算符(%)在每8个循环周期时打印一个换行符
*/
#include<stdio.h>
#define Row 8
int main(){
char ch;
int i=0;
printf("请输入您想要转换的文本(输入'#'代表结束文本):\n");
while((ch=getchar())!='#'){
if(ch=='\n'){
i=0;
printf("换行符的ASCII码为%d\n",ch);
continue;
}
i++;
printf("%c的ASCII码为%d\n",ch,ch);
if((i==Row)){
i=0;
printf("\n");
}
}
printf("END!\n");
return 0;
}
运行结果:
请输入您想要转换的文本(输入'#'代表结束文本):
zsjf, l;[]c'
z的ASCII码为122
s的ASCII码为115
j的ASCII码为106
f的ASCII码为102
,的ASCII码为44
的ASCII码为32
l的ASCII码为108
;的ASCII码为59
[的ASCII码为91
]的ASCII码为93
c的ASCII码为99
'的ASCII码为39
换行符的ASCII码为10
#
END!
--------------------------------
Process exited after 23.37 seconds with return value 0
请按任意键继续. . .
//:’#'这个字符是在换行之后再次打印的,为了证明一下 运行结果
第三题:
/*
编写一个程序,读取整数直到用户输入0.
输入结束后,程序应该报告用户输入的偶数(不包括0)个数
以及这些偶数的平均值、输入的奇数以及奇数的平均值
*/
#include<stdio.h>
int main(){
int num;
int i=0;
int j=0;
double sum1=0.0;
double sum2=0.0;
double average1=0.0;
double average2=0.0;
printf("请输入一个大于零的整数(如果输入数字 0 则输入结束!):\n");
while((scanf("%d",&num))&&(num!=0)){
if(num%2==0){
sum1+=num;
i++;
}else{
sum2+=num;
j++;
}
}
average1=sum1/i;
average2=sum2/j;
if(i>0){
printf("您输入的偶数个数为:%d 个,这些偶数的平均值为:%lf.\n",i,average1);
}else{
printf("您输入的数字没有偶数!\n");
}
if(j>0){
printf("您输入的奇数个数为:%d 个,这些奇数的平均值为:%lf.\n",j,average2);
}else{
printf("您输入的数字没有奇数!\n");
}
printf("END!\n");
return 0;
}
运行结果:
请输入一个大于零的整数(如果输入数字 0 则输入结束!):
5
4
78
56
33
53
49
0
您输入的偶数个数为:3 个,这些偶数的平均值为:46.000000.
您输入的奇数个数为:4 个,这些奇数的平均值为:35.000000.
END!
--------------------------------
Process exited after 14.36 seconds with return value 0
请按任意键继续. . .
第四题:
注:请用英文字符进行测试,由于还没有学会中文字符串的应用,这是个bug!
请一定用英文字符进行测试!!!谢谢!!! 😃
/*
使用if else语句编写一个程序读取输入,读到#停止
使用感叹号替换句号,用两个感叹号替换原来的感叹号
最后报告进行了多少次替换
*/
#include<stdio.h>
int main(){
char str;;
int i=0;
int j=0;
int k=0;
printf("请输入您想测试的一段话('#'代表停止):\n");
while((str=getchar())!='#'){
if(str=='.'){
putchar('!');
i++;
}else if(str=='!'