一、选择题

1. 设有定义“int n1=0,n2,*p=&n2,*q=&n1;”,以下賦值语句中与“n2=n1;”语句等价的是( A )。

A. *p=*q;               B. P=q;
C. *p=&n1;             D. p=*q:

2. 以下定义语句中正确的是(C)。
A. char a=’A’ b=’B’; B. float a=b=10.0;
C. int a=10,*b=&a; D.float a,b=&a;
*
3. 若有语句“int a=4,point=&a;”,下面均代表地址的一组选项是( D)。
A. a,point,&a B. &a,&a,point
C. &point,point,&a D. &a,&point,point
4. 若有说明语句“int i,x[3][4];”,则不能将x[1][1]的值赋给变量i的语句是( C )。
A. i=
((x+1)+1); B. i=x[1][1];
C. i=((x+1)); D. i=(x[1]+1);
**5. 设有定义“int m=2,n=5,p=&n;”,则语句“m=p;”的结果是( B )。
A. 指针p指向m;
B. 变量m的值变为5;
C. 变量n的值变为2;
D. 指针p指向m,同时变量m的值变为5;
*6. 若有定义“int a[]={1,3,5,7,9},p=a;”,结果为7的表达式是(A)。
A. *(p+3); B. *(p+4);
C. *p+3; D. *p+4;
7. 下面程序段的运行结果是( B )。
char str[]=”ABC”,p=str;
printf(“%d\n”,
(p+2));
A. 0
B.字符C的ASCⅡ码值
C.字符C的地址
D.字符C
8. 已知函数定义为
float fun1(int x,int y)
{
float z;
z=(float)x/y;
return (z);
}
若主调函数中有“int a=1,b=0;”语句,可以正确调用此函数的语句是( D )。

A. printf(” %d”,fun1(a,b) ) ;
B. printf(” %d”,fun1(&a,&b) ) ;
C. printf(” %d”,*a,*b) ) ;
D.调用时发生错误

二、填空题

  1. “*”称为 取内容 运算符,“&”称为取地址 运算符。
  2. 在语句“int a=3,p=&a;”中,*p的值是 3
  3. 在语句“int *pa[5];”中,pa是一个具有5个元素的指针数组,每个元素是一个int类型的指针。
  4. 若两个指针变量指向同一个数组中的不同元素,则可以进行减法运算和 比较 运算。
  5. 存放某个指针 的地址值的变量称为指向指针的指针,即 二级 指针。
  6. 设“int a[10],*p=a;”,则对a[3]的引用可以是p[3](下标法)和 *(p+3) (地址法)
  7. 若a是已定义的整型数组,再定义一个指向a的存储首地址的指针p的语句是 int *p=a
  8. 若有声明“char a[15]=”Windows-9x”;”,则语句“printf(“%s”,a+8);”的输出结果为 9x

三、写出下列程序的运行结果

1.

#include<stdio.h>
void main()
{int a,*p1,*p2;a=10;p1=&a;p2=p1;printf("%d,%d,%d\n",a,*p1,*p2);*p1=11;printf("%d,%d,%d\n",a,*p1,*p2);
}

运行结果:10,10,10
11,11,11

2.

#include<stdio.h>
void main()
{char str[]="a7234.405",*p;int s=0;for(p=str;*p!='\0';p++)if(*p>='0'&&*p<='9')s+=*p-0x30;printf("s=%d\n",s);
}

运行结果:s=25

3.

#include<stdio.h>
void main()
{int i,a[]={0,1,2},*p[3];for(i=0;i<3;i++)p[i]=&a[i];printf("%d,%d\n",*p[2],**(p+1));
}

运行结果:2,1

4.

#include<stdio.h>
int func(int *a,int *b)
{static int m=0,i=2;i+=m+1;m=i+*a+*b;return m;
}
void main()
{int k=4,m=1,p;p=func(&k,&m);printf("%4d",p);p=func(&k,&m);printf("%4d\n",p);    }

运行结果: 8 17

5.

#include<stdio.h>
void main()
{int i;char aa[][3]={'a','b','c','d','e','f'};char (*p)[3]=aa;for(i=0;i<2;i++)if(i==0)aa[i][i+1]=**(p++);printf("%c\n",**p);
}

运行结果: d

四、程序填空题

1.以下程序求数组a中的最小值。

#include<stdio.h>
void main()
{int a[]={7,4,2,3,10};int m,k,*ptr;m=a[0];ptr=  a  ;for(k=1;k<5;k++)m=(*(ptr+k)<m)?  *(ptr+k)  :m;printf("%d\n",m);
}

运行结果:2

2. 以下程序求数组a中下标为偶数的元素之和。

#include<stdio.h>
void main()
{int a[]={5,3,7,2,1,5,4,10};int s=0,k;for(k=0;k<8;  k=k+2  )s+=*(  a+k  );printf("%d\n",s);
}

运行结果:17

3. 以下 程序实现从10个数中找出最大和最小值。

#include<stdio.h>
int max,min;
void find_max_min(int *p,int n)
{int *q;max=min=*p;for(q=p;q<  p+n  ;q++)if(  max<*q  )max=*q;else if(min>*q)min=*q;
}
void main()
{int i,num[10];printf("输入10个数:");for(i=0;i<10;i++)scanf("%d",&num[i]);find_max_min(  num  ,10);printf("最大值=%d,最小值=%d\n",max,min);
}

运行:输入10个数: 12 4 5 7 8 13 15 12 54 32
结果:最大值=54,最小值=4

五、编写程序

1.编程将从键盘输入的每个单词的第一个字母转换为大写字母,输入时各单词必须用空格隔开,用“.”结束输入。

#include<stdio.h>
#include<string.h>
char zhuanhua(char c)  /*定义将小写字母转化为大写字母的函数*/
{   char C;if(c>='a'&&c<='z')    /*是小写字母就转化,不是则原样返回*/C=c-32;else  C=c;return C;
}     /*此函数防止有标点符号或者第一个字母本身是大写字母*/
void main()
{   char a[100],*p=a;int i=1,j;a[0]=' ';p++;   /*为方便下面的if语句,初始化a[0]为空格*/printf("\n入一字符串:");for(;;){   scanf("%c",p);if(*p=='.')break;p++;i++;}a[i]='\0';for(j=1;j<i;j++){   if(a[j-1]==' '&&a[j]!=' ') /* 第一个字母前面可能有很多空格*/a[j]=zhuanhua(a[j]); /*调用转化函数,使其变为大写字母*/}p=a;while(*p){printf("%c",*p);p++;}putchar('\n');
}

运行:入一字符串:turbo c and borland c.
结果:Turbo C And Borland C.

2. 编写函数fun,其功能是从字符串中删除指定的字符。(同一字母的大、小写按不同字符处理)。例如,程序执行时,在“turbocandborlandc++”中删除从键盘输入的字符“n”,则字符串变为“turbocadborladc++”如果输入的字符在字符串中不存在,则字符串照原样输出。
源程序:

#include<stdio.h>
void fun(char *str,char c)
{   char *p;for(p=str;*p!='\0';p++)if(*p!=c) *str++=*p;*str='\0';
}
void main()
{   char str[80],c;printf("\n请输入一字符串:");gets(str);printf("\n输入要删除的字符:");scanf("%c",&c );fun(str,c);puts(str);
}

运行:请输入一字符串:turbocandborlandc++
输入要删除的字符: n
结果:turbocadborladc++

3. 输入一个字符串,内含数字和非数字字符,如gs423cd156b7896>?df12345,将其中连续的数字作为一个整数,依次存放到一数组a中,即423放在a[0]、156放入a[1],……。最后统计共有多少个整数,并输出这些数。

源程序:
#include"stdio.h"
#define  max 1042
void main()
{  float a[max];
int j,t,i=0;
char b[max],*p=b;
printf("输入串b[]=");
gets(b);
while(*p!='\0'){  a[i]=0;while(((*p)<='9'&&(*p)>='0')&&((*p)!='\0')){  t=(int)(*p-48);a[i]=a[i]*10+t;p++;if((*p)>'9'||(*p)<'0') i++;}p++;}
for(j=0;j<i;j++)printf("\t%.0f",a[j]);
printf("\n串中包含%d个整数。\n",i);
}

运行:输入串b[]=gs423cd156b7896>?df12345
结果: 423 156 7896 12345
串中包含4个整数。

4. 编程将八进制数转换为十进制数。

源程序:
#include<stdio.h>
void main()
{  int n;char *p,a[6];p=a;printf("输入一个八进制数:");gets(p);n=0;while(*p!='\0'){n=n*8+*p-'0'; p++;}printf("\n%s的十进制形式为:%d\n",a,n);
}

运行:输入一个八进制数:1234
结果:1234的十进制形式为:668

*5. 两个字符串连接程序,要求将两个字符串中的字符按字母顺序排列。
源程序:

#include<stdio.h>
#include<string.h>
void main()
{   char a[]="acegikm";char b[]="bdfhjlnpq";char c[80];int i=0,j=0,k=0;while(a[i]!='\0'&&b[j]!='\0') {if(a[i]<b[j]){c[k]=a[i];i++;}else c[k]=b[j++];k++;}c[k]='\0';if(a[i]=='\0')strcat(c,b+j);else strcat(c,a+i);printf("字符串a:%s\n字符串b:%s\n",a,b);printf("连接后的字符串为:%s\n",c);
}

*6. 从键盘输入10个数,从中找出最大的数。
源程序:

#include<stdio.h>
void main()
{   char a[10],*p=a;
int i=0,j=0;for(i=0;i<10;i++) scanf("%d",&a[i]);
for(j=0;j<10;j++)if(*p<*(a+j))p=a+j;printf("%d\n",*p);
}

*7. 将一个数组中的元素按逆序存放。
源程序:

#include<stdio.h>
#define N 7
void main()
{   int a[N]={12,9,16,5,7,2,1};int k,s,*p=a,*q;
printf("原数组:\n");for(k=0;k<N;k++)printf("%4d",a[k]);for(q=p+N-1;p<q;p++,q--){s=*p;*p=*q;*q=s;}
printf("\n逆序后数组:\n");
for(k=0;k<N;k++)  printf("%4d",a[k]);printf("\n");
}

《C系列-实践相关》C语言八相关推荐

  1. 《C系列-实践相关》C语言十

    一.选择题 1.以下文件函数中,用于关闭文件的函数是( D ). A. fopen B. fprintf C. fscanf D .fclose 2. 需要以写方式打开一个名为myfile.txt的文 ...

  2. 《C系列-实践相关》C语言九

    一.选择题 1. 设有以下定义语句,下列叙述中不正确的是( B ). struct ex { int x; float y; char z; }example; A.struct是结构体类型的保留字 ...

  3. 《C系列-实践相关》C语言一

    一.选择题 1. 一个C语言程序的执行是( A ) A. 从程序的main函数开始,到main函数结束的 B. 从程序的第一个函数开始,到本程序的最后一个函数结束的 C. 从程序的main函数开始,到 ...

  4. C语言入门系列一之C语言介绍、环境配置和运行执行

    鉴于书本和教材文字过多.又难懂的缺点,所以我打算写一系列通俗移动的C语言入门教程,让大家在短时间内学习和掌握C语言,以及遇到C语言的一些问题该如何得到快速的解决.希望这些系列的教程,能够帮助到大家!该 ...

  5. 大型企业网络配置系列课程详解(八) --VoIP的配置与相关概念的理解

    大型企业网络配置系列课程详解(八) --VoIP的配置与相关概念的理解   试验背景: 伴随着电路交换网络的发展,PSTN(公共交换电话网络)的普及已经给人类带来了前所未有的方便,在现实生活中只要有P ...

  6. 【C、C++系列-10】C语言实现:百钱买百鸡问题

    [C.C++系列-10]C语言实现:百钱买百鸡问题 1. 问题 百钱买百鸡问题:我国古代数学家张丘建在<算经>一书中曾提出过著名的"百钱买百鸡"问题.该问题叙述如下:鸡 ...

  7. 植物大战僵尸变态辅助开发系列教程(E语言实现和VC6实现)(下)

    植物大战僵尸变态辅助开发系列教程(E语言实现和VC6实现)(下) 36.全屏秒杀 37.秒杀实现 37.PVZ聚怪 38.种植CALL的查找与调用 39.OpenProcess错误 40.错误:con ...

  8. 植物大战僵尸变态辅助开发系列教程(E语言实现和VC6实现)(上)

    植物大战僵尸变态辅助开发系列教程(E语言实现和VC6实现)(上) 11.E语言第一课(基址+偏移的读写) 12.E语言第二课(字节集的写入) 13.E语言第三课(快捷键的使用) 14.E语言第四课(调 ...

  9. SpringBoot实现1对1、1对多、多对多关联查询——基于SpringBoot和Vue的后台管理系统项目系列博客(十八)

    系列文章目录 系统功能演示--基于SpringBoot和Vue的后台管理系统项目系列博客(一) Vue2安装并集成ElementUI--基于SpringBoot和Vue的后台管理系统项目系列博客(二) ...

最新文章

  1. mysql元数据死锁日志_这个未修复的MySQL 5.7死锁Bug,你知道么?
  2. ubuntu下终端提示符设置
  3. Codeforces Round #365 (Div. 2) D. Mishka and Interesting sum (离线树状数组+前缀xor)
  4. matlab中GUIDE的UItable居中方法
  5. python 并发编程 多线程 目录
  6. 在caffe中添加样本扩增的功能
  7. 拨码开关控制数码管的数字显示_VHDL编程
  8. python动态爱心曲线_使用matplotlib动态刷新指定曲线实例
  9. 操作系统-页式虚拟存储器管理系统设计
  10. vs2015 professional 密钥
  11. Es6 let const var的区别
  12. 教你itunes电脑版怎么下载
  13. windows 下 tomcat 开机自启动
  14. html5拖拽表单设计器,可视化表单设计器拖拽生成表单(原创)
  15. C++实现Cholesky分解
  16. 表中数据的更改量保存视图
  17. 大写金额换算器iOS版源代码
  18. win10分辨率不能调整_笔记本电脑如何连接投影仪?MAC OS/Win10/7笔记本和投影仪连接方法...
  19. python阶乘的代码_python编码阶乘
  20. 鸿蒙实训(基于智能硬件学习)第二期

热门文章

  1. jump Server开源堡垒机的部署以及资产管理
  2. board/freescale/mx6ull_alientek_emmc/Kconfig:15: ‘endif‘ in different file than ‘if‘
  3. ios文件扩展名_安卓JY Share | 还在为担心文件上传成为 base.apk,这个应用帮你解决...
  4. SkeyeVSS智慧塔吊可视化监控系统 助力落实建筑安全生产解决方案
  5. 一篇文章搞懂 HDFS 的 Archive 到底是什么
  6. scud的jvalidation
  7. 天正安装autocad启动失败_天正T20-V2.0版本,在WIN764位系统下运行AUTOCAD2007 不成功,提示AUTOCAD启动失败...
  8. linux如何获取软件下载地址
  9. 达梦数据库-搭建DMHS双向同步
  10. 2022.8.20 科大讯飞秋招笔试