计算机科学-第8周 字符串和动态数组 题目及参考解答
来源:互联网 发布:mac升级失败怎么办 编辑:程序博客网 时间:2024/05/21 09:45
《计算机科学》课程主页在:http://blog.csdn.net/sxhelijian/article/details/13705597
1、阅读程序
阅读下面的程序,写出运行结果,上机时运行程序,记录结果,从而能够理解指针的用法
(1)
#include<stdio.h>int main(){ int i; for(i='A'; i<'I'; i++,i++) printf("%c",i+32); printf("\n"); return 0;}你认为运行结果为:_________________
实际运行的结果为:_________________
(2)
#include<stdio.h>int main(){ char ch; scanf("%c", &ch); while(ch!='\n') { printf("%c", ch-6); scanf("%c", &ch); } return 0;}你认为程序的功能为:_____________,实际运行程序进行体验。
(3)
#include<stdio.h>#include<string.h>int main(){ char *p1,*p2,str[50]="ABCDEFG"; p1="abcd"; p2="efgh"; strcpy(str+1,p2+1); strcpy(str+3,p1+3); printf("%s",str); return 0;}你认为运行结果为:_________________
实际运行的结果为:_________________
(4)
#include <stdio.h>int main( ){ char s[]="abcdefg"; char *p; p=s; printf("ch=%c\n",*(p+5)); return 0;}你认为运行结果为:_________________
实际运行的结果为:_________________
2、字符串加密程序
背景:小明让同学传纸条给小丽。小丽接到会心一笑,大家却不知所云。纸条上写着M$pszi$y,两人暗中约定是,真实字符为实际字符前面的第4个!M$pszi$y是神马意思?推算一下,或从ASCII码表中查一下,自然是I love u。
(1)小明请你写一个程序,在给小丽写情书时,再不用费功夫自己“翻译”,原信中每一个字符加密为其后的第4个字符。例,输入I love u,输出M$pszi$y。
参考解答:
#include<stdio.h>int main(){ char s[80], t[80]; int i; gets(s); for(i=0; s[i]!='\0'; i++) { t[i] = s[i]+4; } t[i] = '\0'; //此时i为? printf("%s\n", t); return 0;}
(2)小丽请你写一个程序,在看小明的情书时,让程序帮着“解密”。因为有同学知道了他们俩人的“加密”手段,决定纸条由人传,加密数字(1-9)用两人约好的手势传,所以解密时,需要将加密数字作为程序输入。例,输入M$pszi$y(回车)4,输出I love u
参考解答:
#include<stdio.h>int main(){ char s[80], t[80]; int i, n; printf("输入待解密句子:"); gets(s); printf("输入加密数字:"); scanf("%d", &n); char *pt = t; for(i=0; *(s+i)!='\0'; i++,pt++) { *pt = s[i]-n; } *pt = '\0'; printf("%s\n", t); return 0;}
(3)小刚常帮着传纸条,想知道俩人的秘密,但不知道加密数字,于是写了一个程序,可以列出所有可能的情况。例,输入M$pszi$y,多行输出中必然有一行是I love u。你就是小刚,写出这个程序来吧。
参考解答:
#include<stdio.h>int main(){ char s[80], t[80], *pt; int i, n; printf("输入待解密句子:"); gets(s); for(n=1; n<9; n++) { pt = t; for(i=0; *(s+i)!='\0'; i++,pt++) { *pt = s[i]-n; } *pt = '\0'; printf("%s\n", t); } return 0;}
3、字符统计:分别统计字符串中大写、小写字母和数字字符的个数。
#include<stdio.h>#include<string.h>int main(){ char str[256], *ps; int upper=0, lower=0, digit = 0; gets(str); for ( ps = str; *ps != '\0'; ps++ ) { if ( *ps >= 'A' && *ps <= 'Z' ) upper++; else if ( *ps >= 'a' && *ps <= 'z' ) lower++; else if ( *ps >= '0' && *ps <= '9' ) digit++; } printf("字符串: %s\n", str); printf("大写字母: %d\n", upper); printf("小写字母: %d\n", lower); printf("数字字符: %d\n", digit); return 0;}
4、编程序。将动态数组中的元素进行排序
编一个程序,输入某班某门课的成绩,进行排序后输出。成绩可能为小数。班级人数不定,要求采用动态数组完成。在下面代码基础上完成
#include<stdio.h>#include<malloc.h>int main(){ int count, i,j; float *pf; scanf("%d", &count); //输入班级人数 //分配空间,用动态数组存储全班同学成绩 //输入同学们的成绩 //排序 //输出排序后的成绩 free(pf); return 0;}参考解答:
#include<stdio.h>#include<malloc.h>int main(){ int count, i,j,r; float *pf, tmp; scanf("%d", &count); //输入班级人数 //分配空间,用动态数组存储全班同学成绩 pf = (float*) malloc( sizeof(float) * count ); //输入同学们的成绩 for ( i = 0; i < count; i++ ) { scanf("%f", pf+i); } //排序 for(j=count-1; j>0; j--) //冒泡法 { for(r=0; r<j; r++) { if(*(pf+r)>*(pf+r+1)) //或pf[r]>pf[r+1],下面*(pf+r)类似 { tmp = *(pf+r); *(pf+r) = *(pf+r+1); *(pf+r+1) = tmp; } } } //输出排序后的成绩 for ( i = 0; i < count; i++ ) { printf("%f\n", *(pf+i)); } free(pf); return 0;}
0 0
- 计算机科学-第8周 字符串和动态数组 题目及参考解答
- 计算机科学-第4周 结构 题目及参考解答
- 计算机科学-第6周 文件 题目及参考解答
- 计算机科学-第13周 函数 题目及参考解答
- 计算机科学-第14周模块化程序设计 题目及参考解答
- 计算机科学-第15周 递归函数 题目及参考解答
- 计算机科学-第9周 数组、结构体、指针综合练习 题目及参考解答
- 计算机科学-第3周 排序和查找 题目及参考解答
- 计算机科学-第7周 指针及应用 题目及参考解答
- 计算机科学-第2周 数组初练-参考解答
- 法133计算机科学课第9、10周实践题目及参考解答
- 法133计算机科学课第11周实践题目及参考解答
- 法133计算机科学课第12周实践题目及参考解答
- 2013-C++第13周班级对抗赛题目及参考解答
- 法133计算机科学课第13周实践题目及参考解答
- 法133计算机科学课第15周实践题目及参考解答
- 计算机科学-第2周 数组初练-题目
- C++第8周项目2-5参考解答
- 三国易中天
- git-review 1.23
- local reference table overflow
- 天马行空
- Unity Android SDK支付平台接入流程
- 计算机科学-第8周 字符串和动态数组 题目及参考解答
- [PHP四六级] 腾讯笔试之is_writeable函数bug问题
- n皇后问题
- 78
- 黑马程序员_ 黑马程序员_基础加强第二天——类加载器
- 中纪委试点查办腐败案件以上级纪委领导为主
- 招聘的几家公司
- QT 做界面,加载c语言自己编译的动态库
- 用openssl生成SSL使用的私钥和证书,并自己做CA签名