华中科技大学C语言实验与课程设计上机实验报告汇总(1~8全部)(5)

2020-04-03 13:02

华中科技大学 C语言实验与课程设计实验报告 CS1408赵晓雁

break; case 2: p = strcat; break; case 3:

gotodowm; }

getchar();

printf(\ i = 0;

printf(\ i = 0;

result = (a, b);

printf(\dowm:

; return 0; }

【分析】(1)通过下面关于result的的操作可以看出,前面是用两个函数来

控制选择哪个菜单来执行,因此p的作用就是等于不同的函数来起到开关的作用,所以前面需要声明p的存在,由此填出三个空上的内容。第一个是char *(*p)(char *a,char *b);第二个是gets(a),第三个是gets(b),第四个是p。

(2)由(1)可得正确的源程序,按照要求输入则可得到输出结果。 【程序】

#include #include #include int main() {

char *(*p)(char *a,char *b);

char a[80],b[80],c[160],*result=c; int choice,i; do{

printf(\ printf(\ printf(\

printf(\ scanf(\ }while(choice<1||choice>5); switch(choice){ case 1:

p=strcpy; break; case 2:

p=strcat;

46

华中科技大学 C语言实验与课程设计实验报告 CS1408赵晓雁

break; case 3:

goto down; }

getchar();

printf(\ i=0; gets(a);

printf(\ i=0; gets(b);

result=p(a,b);

printf(\ down: ; return 0; }

【测试】程序运行结果如下,程序正确。

6.2.3跟踪调试

请按下面的要求对所给的源程序进行操作,并回答问题和排除错误。 (1)单步执行源程序。进入strcpy时,watches窗口中s为何值?返回main时,watches 窗口中s为何值? 进入函数时

返回main时,无s的值。

(2)排除源程序中的错误,使程序输出结果为:there is a bote on the lake. 题目程序代码: #include

char *strcpy(char *, char*); int main(void) {

char a[20], b[60] = \printf(\ return 0; }

char *strcpy(char *s, char *t) {

while(*s++ = *t++)

47

华中科技大学 C语言实验与课程设计实验报告 CS1408赵晓雁

; return (s); }

【修改后的源程序】

#include #include

char *strcpy(char *,char *); int main() {

char a[20],b[60]=\ printf(\ return 0; }

char *strcpy(char *s,char *t) {

while((*s++=*t++)) ; return(s); }

6.2.4 程序设计

编写并上机调试运行能实现以下功能的程序:

(1)已知一个长整型变量占4个字节,其中每个字节又分成高4位和低4位。试编写一 个程序,从该长整型变量的高字节开始,依次取出每个字节的高4位和低4位并以数字字符的形式记性显示。

(2)利用大小为n的指针数组指向用gets函数输入的n行,每行不超过80个字符。试编 写一个函数,它将每一行中连续的多个空格字符压缩为一个空格字符。在调用函数中输出压缩空格后的各行,空行不予输出。

(3)编写一个程序,输入n个整数,排序后输出。排序的原则由命令行可选参数-的-d决 定,并且有参数-d时按递减顺序排序,否则按递增顺序排序。要求将排序算法定义成函数,利用指向函数的指针使该函数实现递增或递减排序。

(4)设某个班有N个学生,每个学生修了M门课程。输入M门课程的名称,然后依次 输入N个学生中每个学生所修M门课程的成绩,并且都存放到相应的数组中。试编写下列函数:

① 计算每个学生各门课程平均成绩。 ② 计算全班没门课程的平均成绩。

③ 分别统计低于全班各门课程平均成绩的人数。

④ 分别统计全班各门课程不及格的人数和90分以上的人数。 在调用函数中输出上面各函数的计算结果(要求都用指针操作,不得使用下下标操作)

【程序】

(1)

#include void litoc(long int); int main() {

48

华中科技大学 C语言实验与课程设计实验报告 CS1408赵晓雁

long int a;

printf(\ scanf(\ litoc(a); return 0; }

void litoc(long int a) {

char *p,low,high; p=&a; p=p+3; int i;

for (i=0;i<4;i++) {

low=(*p)&0x0f; if(low<10)

low=low+'0'; else

low=low+'A'-10; high=(*p >> 4)&0x0f; if (high<10)

high=high+'0'; else

high=high+'A'-10;

printf(\ p--; } }

(2)

#include #define N 80

void DeleteSpace (char *p[],int n); int main(void) {

int i,j,n;

printf( \ scanf(\ n=n+1;

char a[n][N],*p[n]; for(i=0;i

change(p,n); return 0; }

void change(char *p[],int n) {

int i,j,k,t;

49

华中科技大学 C语言实验与课程设计实验报告 CS1408赵晓雁

for(i=0;i

for(j=0;p[i][j]!='\\0';j++){

if(p[i][j]==' '&&p[i][j+1]==' '){ k=j+1;

while(p[i][k++]==' '); k--; t=j+1;

while(p[i][t++]=p[i][k++]); } }

if(strlen(p[i])>0) printf(\ } }

(3)#include #include

void down_sort( int * , int ) ; void up_sort( int * , int ) ;

int main( int argc , char * argv[] ) {

int n , i ;

void (*p)(int * , int ) ;

printf( \请输入要输入整数的个数:\ scanf( \ int a[n] ;

for( i = 0 ; i < n ; i++ ){ scanf( \ }

if( argc > 1 && !strcmp(argv[1] , \ p = down_sort ; else

p = up_sort ; p( a , n ) ;

printf( \排序后:\\n\ for( i = 0 ; i < n ; i++ ){ printf( \ }

return 0 ; }

void down_sort( int *a , int m ) {

int i , j , t ;

for( i = 0 ; i < m - 1 ; i++ ){

for( j = 0 ; j < m-1-i ; j++ ){ if( *(a+j) < *(a+j+1) ){ t = *(a+j) ;

*(a+j) = *(a+j+1) ; *(a+j+1) = t ;

50


华中科技大学C语言实验与课程设计上机实验报告汇总(1~8全部)(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:财务案例思考题汇总

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: