CPrimerPlus第六版第七章编程题(每题附带原书标准题⽬和测试结果:))
本⼈⾃⼰初学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");
return0;
}
运⾏结果:
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");
return0;
}
运⾏结果:
请输⼊您想要转换的⽂本(输⼊'#'代表结束⽂本):
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");
return0;
}
运⾏结果:
请输⼊⼀个⼤于零的整数(如果输⼊数字0则输⼊结束!):
5
4
78
56
33
53
49
您输⼊的偶数个数为: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=='!'){
putchar('!');
putchar('!');
j++;
}else{
putchar(str);
}
}
k=i+j;
printf("\n");
printf("'.'进⾏了%d次替换,'!'进⾏了%d次替换,⼀共进⾏了%d次替换。\n",i,j,i+j);
printf("END!\n");
return0;
}
运⾏结果:
请输⼊您想测试的⼀段话('#'代表停⽌):
jdios.jsioajdoa!jojdoasd.!!joisajdoa.jcidosjcs..sw#
jdios!jsioajdoa!!jojdoasd joisajdoa!jcidosjcs sw
'.'进⾏了5次替换,'!'进⾏了6次替换,⼀共进⾏了11次替换。
END!
-
-------------------------------
Process exited after 28.53 seconds with return value 0
请按任意键继续...
第五题:
/*
使⽤switch重写第四题
*/
#include<stdio.h>
int main(){
char str;;
int i=0;
int j=0;
int k=0;
printf("请输⼊您想测试的⼀段话('#'代表停⽌):\n");
while((str=getchar())!='#'){
switch(str){
case'.':
putchar('!');
i++;
break;
case'!':
putchar('!');
putchar('!');
j++;
break;
default:
putchar(str);
}
}
k=i+j;
printf("\n");
printf("'.'进⾏了%d次替换,'!'进⾏了%d次替换,⼀共进⾏了%d次替换。\n",i,j,i+j); printf("END!\n");
return0;
}
运⾏结果:
请输⼊您想测试的⼀段话('#'代表停⽌):
jdios.jsioajdoa!jojdoasd.!!joisajdoa.jcidosjcs..sw#
jdios!jsioajdoa!!jojdoasd joisajdoa!jcidosjcs sw
'.'进⾏了5次替换,'!'进⾏了6次替换,⼀共进⾏了11次替换。
END!
--------------------------------
Process exited after 3.763 seconds with return value 0
请按任意键继续...
第六题:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论