指针程序设计作业
《C语言程序设计教程(第二版)》 第09章-指针(1)
访问p_int所 指向的变量
getch();
}
程序运行结果: num_int=12, *p_int=12 num_f=3.14, *p_f=3.14 num_ch=p, *p_ch=p
2019/2/22
11
1、指针变量的定义
指针变量的定义标识符
数据类型 *指针变量[,*指针变量2……];
例如, [案例9.1]中的语句:
int num_int=12, *p_int ;
特别说明:定义而未初始化的指针变量(例如 p_int)是悬空的。
使用悬空指针变量,很容易破坏系统,导致系统 瘫痪。
2019/2/22
12
2、取地址运算 : &变量名 例 如 , [ 案 例 9.1] 中 的 &num_int 、 &num_f 、 &num_ch 的结果,分别为对应变量的地址 (num_int 、 num_f、num_ch)。 注意:指针变量只能存放相同数据类型变量的 地址。 例如, [案例9.1]中的指针变量p_int、p_f、p_ch, 只能接收int型、float型、char型变量的地址,否则出 错。
使p_int指向变量num_int
2019/2/22
10
printf(“num_int=%d, *p_int=%d\n”, num_int, *p_int); printf(“num_f=%4.2f, *p_f=%4.2f\n”, num_f, *p_f); printf(“num_ch=%c, *p_ch=%c\n”, num_ch, *p_ch);
9.3* 1维数组的指针与列指针变量 9.4 字符串的指针和指向字符串的指针变量 9.5 指针数组与主函数main()的参数 9.6 返回指针值的函数
C语言程序设计课程作业_A
C语言程序设计课程作业_A一、单选题1.(4分)设有以下定义int k=7, x=12;,则能使值为3的表达式是()• A. x%=(k%=5)• B. x%=(k-k%5)• C. x%=k• D. (x%=k)-(k%=5)答案D解析C语言程序设计/数据类型与运算/整型算术表达式2.(4分)以下程序的输出结果是? #include main() { int x=020,y=0x20,z=20; printf('%d,%d,%d ', x,y,z); }• A. 20,20,20• B. 32,16,20• C. 16,32,20• D. 20,32,20答案C解析C语言程序设计/数据类型及运算3.(4分)C语言中while和do while循环的主要区别是( )• A. do-while的循环至少无条件执行一次• B. while循环控制条件比do-while的循环控制条件严格• C. do-while允许从外部转入到循环体内• D. do-while的循环体不能是复合语句答案A解析C语言程序设计/循环程序设计/while语句与do-while语句4.(4分)执行语句scanf('%d,%d',&m,&n);使m和n的值分别为1和2,正确输入是( )• A. 1• B. 1 2• C. 1,2• D. 12,2答案C解析C语言程序设计/顺序程序设计/整型数据的格式输入5.(4分)sizeof(float)是( )• A. 一个双精度型表达式• B. 一个整型表达式• C. 一种函数调用• D. 一个不合法的表达式答案B解析C语言程序设计/数据类型与运算/实型变量存储6.(4分)下列选项中,不合法的C语言关键字是• A. auto• B. default• C. static• D. var答案D解析C语言程序设计/C语言概述7.(4分)下面程序的运行结果是( )#include main(){int a[6],i;for(i=1;i<6;i++){a[i]=9*(i-2+4*(i> 3))%5;printf('%2d',a[i]);}}• A. 4 0 4 0 4• B. -4 0 4 0 3• C. -4 0 4 4 3• D. -4 0 4 4 0答案C解析C语言程序设计/数组/二维数组与循环语句结合8.(4分)设有下面的程序段,char s[]='china'; char *p;p=s; 则下列正确的是( )• A. s和p完全相同• B. 数组s中的内容和指针变量p中的内容相等• C. s数组长度和p所指向的字符串长度相等• D. *p与s[0]相等答案D解析C语言程序设计/指针/数组与指针9.(4分)若已定义int a;下面对(1)(2)两个语句(1)int *p=&a; (2)*p=a;的正确解释是( )• A. 语句(1)和(2)中的*p含义相同,都表示给指针变量p赋值• B. (1)和(2)语句的执行结果,都是把变量a的地址赋给指针变量p• C. (1)在对p进行说明的同时进行初始化,使p指向a (2)将变量a的值赋给指针变量p• D. (1)在对p进行说明的同时进行初始化,使p指向a (2)将变量a的值赋给*p答案D解析C语言程序设计/指针/地址与指针10.(4分)下面四个选项中,均是不合法的用户标识符的选项是( )• A. A,P_0,do• B. float,la0,_A• C. b-a,goto,int• D. _123,temp,INT答案C解析C语言程序设计/数据类型与运算/标识符11.(4分)在C语言中,全局变量的隐含存储类别是• A. static• B. extern• C. void• D. register答案B解析C语言程序设计/函数12.(4分)若有以下定义:char s[10]='include',*p=s;则不能代表字符u的表达式是( )• A. s[4]• B. s+4• C. *(p+4)• D. p+=4,*p答案B解析C语言程序设计/指针/字符串指针的引用13.(4分)下面程序#include main(){int y=10;do {y--;}while(--y);printf('%d ',y--);}的运行结果是( )• A. 1• B. -1• C. 8• D. 0答案D解析C语言程序设计/循环程序设计/do-while语句14.(4分)a为0111,b为0123,a、b、c均为无符号短整型变量,则语句printf('%o,%o,%o,%o',c=~a,c= a&b,c=a|b,c=a∧b)的输出结果为( )• A. 177666,101,133,32• B. 0177666,0123,0333,032• C. 0177666,0101,0133,032• D. 177666,0123,0133,034答案A解析C语言程序设计/位运算/异或运算符15.(4分)有一个函数原型如下所示: abc(float x,double y); 则该函数的返回类型为• A. void• B. double• C. int• D. float答案C解析C语言程序设计/函数16.(4分)在ASCII码表中可以看到每个小写字母的ASCII码比它相应的大写字母的ASCII码( )• A. 大32• B. 大64• C. 小32• D. 小64答案A解析C语言程序设计/数据类型与运算/字符常数比较17.(4分)执行以下程序后的输出结果是( )int w=3,z=7,x=10;printf('%d',x>10?x+100:x-10);printf('% d',w++||z++);printf('%d',!w>z);printf('%d',w&&z);• A. 0111• B. 1111• C. 0101• D. 0100答案C解析C语言程序设计/选择结构程序设计/条件运算符18.(4分)程序的三种基本结构是( )• A. 顺序结构,循环结构,递归结构• B. 顺序结构,循环结构,选择结构• C. 选择结构,循环结构,递归结构• D. 顺序结构,选择结构,递归结构答案B解析C语言程序设计/选择程序设计/程序结构19.(4分)设整型变量a值为9,则下列表达式中使b的值不为4的表达式( )• A. b=a/2• B. b=a%2• C. b=8-(3,a-5)• D. b=a>5?4:2解析C语言程序设计/数据类型与运算/整型算术表达式20.(4分)已有定义int k=2;int *p1,*p2;且p1,p2均指向变量k,下面不能正确执行的赋值语句是( )• A. k=*p1+*p2• B. p2=k• C. p1=p2• D. k=*p1*(*p2)答案B解析C语言程序设计/指针/指针变量的定义21.(4分)若有以下定义int a[5]={1,2,3,4,5},*p,i;i=3;p=a;,则对数组元素地址的正确引用是( )• A. &p• B. a++• C. &(p+1)• D. &p[i]答案D解析C语言程序设计/指针/数组指针的引用二、判断1.(4分)用typedef可以创建新的基本类型••解析C语言程序设计/结构体与共用体2.(4分)在C 语言中,共用体类型属于构造类型••答案正确解析C语言程序设计/数据类型与运算/构造数据类型3.(4分)strcmp3(char *s,char *t){for (;*t= =*s;){if (!*t) return 0; t++;s++;}return (*s-*t);}库函数strcmp(char*s,char*t)是功能相等的程序段••答案正确解析C语言程序设计/指针/指针作为函数参数4.(4分)C语言程序中,一个文件中的函数可以引用另一个文件中的函数和变量••答案正确解析C语言程序设计/文件一、单选题1.(4分)在C语言中,反斜杠符是( )• A. \n• B. \t• C. \v• D. \\答案D解析C语言程序设计/数据类型与运算/字符常数表示形式2.(4分)执行下列程序段后, int x=10,y=9;int a,b,c;a=(--x= =y++)?--x:++y;b=x++;c=y; 变量a,b, c的值分别是( )• A. a=9,b=9,c=9• B. a=8,b=8,c=10• C. a=9,b=10,c=9• D. a=8,b=8,c=9答案B解析C语言程序设计/选择结构程序设计/条件与算术运算符3.(4分)判断char型变量c1是否小写字母的正确表达式为• A. 'a'<=c1<='z'• B. (c1>='a')&&(c1<='z')• C. (c1>=a)&&(c1<=z)• D. ('a'<=c1)||('z'>=c1)答案B解析C语言程序设计/数据类型及运算4.(4分)阅读以下程序,int w=1,x=2,y=3,z=4,m;m=w• A. 1• B. 2• C. 3• D. 4答案A解析C语言程序设计/选择结构程序设计/条件运算符嵌套5.(4分)在C语言中运算符的优先级从高到低的排列顺序是• A. 关系运算符算术运算符赋值运算符• B. 算术运算符赋值运算符关系运算符• C. 赋值运算符关系运算符算术运算符• D. 算术运算符关系运算符赋值运算符答案D解析C语言程序设计/数据类型及运算6.(4分)若有以下定义, int k=7,x=12, 则能使值为3的表达式是( )• A. x%=k%=5• B. x%=k-k%5• C. x%=(k-k%5)• D. (x%=k)-(k%=5)答案D解析C语言程序设计/数据类型与运算/算术表达式7.(4分)设有以下定义int k=7, x=12;,则能使值为3的表达式是()• A. x%=(k%=5)• B. x%=(k-k%5)• C. x%=k• D. (x%=k)-(k%=5)答案D解析C语言程序设计/数据类型与运算/整型算术表达式8.(4分)设有以下程序片段:char s[ ]='Program!';char *p;p=s;则执行完上面的程序段后,*(p+8)的值为( )• A. !'• B. '\0'• C. 'm'• D. 不定值答案B解析C语言程序设计/指针/字符串指针的引用9.(4分)C语言中合法的字符常量是• A. ’\\’• B. ”H”• C. ’He’• D. p答案A解析C语言程序设计/数据类型及运算10.(4分)以下read函数的调用形式中,参数类型正确的是( )• A. read(int fd,char *buf,int count)• B. read(int *buf,int fd,int count)• C. read(int fd,int count,char *buf)• D. read(int count,char *buf,int fd)答案A解析C语言程序设计/文件/文件的读和写11.(4分)设有以下程序片段:char a[ ]='hello',*p;p=a;printf('%d',*(p+5));执行上面的程序片段后的结果为( )• A. 111• B. 0• C. 104• D. 不确定的值答案B解析C语言程序设计/指针/数组元素的引用12.(4分)以下程序main(){int x=10,y=10;printf('%d %d ',x--,--y);}的输出结果是( )• A. 10 10• B. 9 9• C. 9 10• D. 10 9答案D解析C语言程序设计/顺序程序设计/整型变量的输出格式和算术运算符13.(4分)以下函数的功能对应于int fun(char *s,char *t) { while (*s)&&(*t)&&(*t==*s)} { t++; s ++; } return(*s-*t); }• A. strlen(s)+strlen(t)• B. strcmp(s,t)• C. strcpy(s,t)• D. strcat(s,t)答案B解析C语言程序设计/循环控制14.(4分)C语言规定,函数返回值的类型是由( )所决定。
指针编程练习题
指针编程练习题指针是一种特殊的数据类型,在C语言中有着重要的作用。
通过指针,我们可以直接访问和操作内存中的数据。
为了熟悉和掌握指针的使用,下面将给出一些指针编程练习题供大家参考。
1. 交换两个变量的值请编写一个程序,使用指针来交换两个整数变量的值。
要求在程序中定义两个整数变量a和b,通过指针交换它们的值,并打印交换后的结果。
示例输入:a = 10,b = 20示例输出:交换前:a = 10, b = 20交换后:a = 20, b = 102. 求数组元素的和请编写一个程序,使用指针来计算一个整型数组中所有元素的和。
要求在程序中定义一个整型数组array,并使用指针访问数组中的元素,计算它们的和,并打印结果。
示例输入:array = {1, 2, 3, 4, 5}示例输出:数组元素的和为:153. 查找数组中的最大值和最小值请编写一个程序,使用指针来查找一个整型数组中的最大值和最小值。
要求在程序中定义一个整型数组array,并使用指针访问数组中的元素,找到数组中的最大值和最小值,并打印结果。
示例输入:array = {7, 4, 9, 2, 5}示例输出:最大值为:9最小值为:24. 字符串长度计算请编写一个程序,使用指针来计算一个字符串的长度。
要求在程序中定义一个字符数组string,并使用指针访问字符数组中的元素,计算字符串的长度,并打印结果。
示例输入:string = "Hello, World!"示例输出:字符串长度为:135. 动态内存分配请编写一个程序,使用指针来动态分配内存空间,并进行数据的读写操作。
要求在程序中使用malloc函数动态分配内存空间,读取用户输入的整数值并存储到动态分配的内存中,然后使用指针访问该内存中的数据,并打印结果。
示例输入:请输入一个整数: 10示例输出:读取到的整数为: 10以上是几个指针编程练习题的示例,通过练习这些题目,可以提高对指针的理解和使用技巧。
《C语言程序设计》实验报告实验六
《C语言程序设计》实验报告实验六使用指针的程序设计学号姓名一、实验目的1、掌握指针的概念,会定义和使用指针变量;2、能正确使用数组的指针和指向数组的指针变量;3、熟悉指针作为函数参数的定义和调用方法;4、能正确使用字符串的指针和指向字符串的指针变量。
二、实验内容1.分析下面的程序并上机运行程序,要求写出3组以上程序的运行结果。
#include <stdio.h>void main(){int *p1,*p2,*p;int a,b;printf("Input a b please");scanf("%d%d",&a,&b);p1=&a;p2=&b;if(a>b){ p=p1;p1=p2;p2=p;}printf("*p1=%d, *p2=%d\n",*p1,*p2);printf("a=%d, b=%d\n",a,b);}『运行结果:』输入1,2得:*p1=1,*p2=2a=1,b=2输入2,1得:*p1=1,*p2=2a=2,b=1输入56,123得:*p1=56,*p2=123a=56,b=1232.下列程序的功能是分别求出数组中所有奇数之和以及所有偶数之和。
形参n给了数组中数据的个数,利用指针odd返回奇数之和,利用指针even 返回偶数之和。
请在下面空白处将实现这一功能的函数完善,并且调试运行出结果。
#include <stdio.h>#define N 10void fun(int *a,int n,int *odd,int *even){int m;*odd=0; *even=0;for(m=0;m<n;m++)if(*(a+m)%2==0)*even+=*(a+m);else*odd+=*(a+m);}void main(){int a[N]={1,10,2,3,19,6},i,n=6,odd,even;printf("The original data is:\n");for(i=0;i<n;i++)printf("%5d",*(a+i));printf("\n\n");fun(a,n,&odd,&even);printf("The sum of odd numbers:%d\n",odd);printf("The sum of even number:%d\n",even);}『运行结果:』3.编程实现从键盘输入一个字符ch和一个字符串str,利用字符指针实现删除字符串str中和字符ch相等所有字符,然后输出字符串str。
C、C++程序设计:指针和数组单元测试与答案
一、单选题1、若已定义: int a[]={0,1,2,3,4,5,6,7,8,9},*p=a,i; 假设0≤i≤9,则对a数组元素不正确的引用是()A.a[p-a]B.a[10]C. p[i]D.*(&a[i])正确答案:B2、假设有定义 int a=3,b=5,*pa=&a,*pb=&b;则执行如下语句后,a,b的值分别为()*pa=a+b;*pb=a+b;A.出错B.a=8,b=13C.a=13,b=13D.a=8,b=8正确答案:B3、有说明 int a[10]=[1,2,3,4,5,6,7,8,9,10},*p=a;,则数值为9的表达式是()。
A.*p+=9B.*(p+8)C. *p+=9D.*(p+9)正确答案:B4、执行char a[10]={"abcd"},*p=a;后,*(p+4)的值是()A.不能确定B."abcd"C.'\0'D.'d'正确答案:C5、若有char *a="ABCD";,则执行cout<<a的结果是()A.AB.ABC.ABCD.ABCD正确答案:D二、判断题1、假设有定义char s[100],*p=s; ,则可以用delete p;来释放p占用的内存空间。
正确答案:×2、假设有定义int a[]={10,20,30,40,50,60,70,80,90,100},*p=a;,则表达式*p+9的值为100。
正确答案:×3、假设有定义 char s1[20]="1234567" ,s2[20]={"ABCD"};,则执行strcpy(s1,s2)后,s1的内容为“ABCD”正确答案:√三、填空题1、假设有定义float d[10]={1.5, 2.0,2.5,3.0},*p=d;则表达式*++p的值为()正确答案:2.02、假设有定义 char s[]="ABCD",*p=s;则执行cout<<p+2的结果为()正确答案:CD。
函数与指针编程题
1.编一程序,将字符串computer赋给一个字符数组,然后从第一个字母开始间隔地输出该串。
请用指针完成。
答案:#include "stdio.h"main(){ static char x[]="computer":char *p;for(p=x;p<x+7;p+=2)putchar(*p);printf("\n");}2. 写一函数,求一个字符串的长度。
在main函数中输入字符串,并输出其长度。
#include<stdio.h>void main(){char a[100],*p;int n=0;p=a;gets(p);for(;*p!='\0';p++){n++;}printf("%d",n);}3.下面findmax函数将计算数组中的最大元素及其下标值和地址值,请编写*findmax()函数。
并将程序调试运行#include<stdio.h>*findmax(int *s,int t,int *k){ }main(){ int a[10]={12,23,34,45,56,67,78,89,11,22},k,*add;add=findmax(a,10,&k);printf("%d,%d,%o\n",a[k],k,add);}答案:#include<stdio.h>int *findmax(int *s,int t,int *k){int max;max=s[0];for(int i=0;i<t;i++){if(max<s[i]){ max=s[i];*k=i;}}return k;}void main(){ int a[10]={12,23,34,45,56,67,78,89,11,22},k,*add;add=findmax(a,10,&k);printf("%d,%d,%o\n",a[k],k,add);}4. 用指针方法处理。
C语言程序设计 指针和数组(11.2.3)--11.3节-11.4节
19 /
20
}
21
SortString(pStr, n);
/* 字符串按字典顺序排序 */
22
printf("Sorted results:\n");
23
for (i=0; i<n; i++)
24
{
25
puts(pStr[i]);
/* 输出排序后的 n 个字符串 */
26
}
27
return 0;
28 }
12
if (p == NULL) /* 确保指针使用前是非空指针,当 p 为空指针时结束程序运行 */
13
{
14
printf("No enough memory!\n");
15
exit(1);
16
}
17
printf("Input %d score:", n);
18
InputArray(p, n);
/* 输入学生成绩 */
Finland Sweden
【例题解析】因指针数组的元素是一个指针,所以在使用指针数组之前必须对数组元素
进行初始化。通过移动字符串在实际物理存储空间中的存放位置而实现的排序,称为物理排
序,而通过移动字符串的索引地址实现的排序,称为索引排序。后者通过指针数组实现,这
是指针数组的一个重要应用。
【例 11.5】下面的程序用于演示命令行参数与函数 int main()各形参之间的关系。
32
for(j = 0; j<n; j++) /* 每班 n 个学生 */
33
{
34
scanf("%d", &p[i*n+j]);
c语言 指针编程题
c语言指针编程题以下是一个简单的C语言指针编程题,可以通过指针操作实现字符串的反转:```c#include <stdio.h>#include <string.h>void reverseString(char* str) {int i, j;char temp;for (i = 0, j = strlen(str) - 1; i < j; i++, j--) {temp = str[i];str[i] = str[j];str[j] = temp;}}int main() {char str[] = "Hello, world!";printf("Original string: %s\n", str);reverseString(str);printf("Reversed string: %s\n", str);return 0;}```在这个程序中,我们定义了一个名为`reverseString`的函数,该函数接受一个字符串作为参数,并通过指针操作实现字符串的反转。
具体来说,我们使用两个指针i和j来遍历字符串,将i指向的字符与j指向的字符交换位置,直到i指向字符串的第一个字符,j指向字符串的最后一个字符为止。
在主函数中,我们定义了一个字符串`str`,并调用`reverseString`函数来反转该字符串。
最后,我们输出反转后的字符串和原始字符串,以便进行比较和验证。
需要注意的是,在使用指针操作时,一定要确保指针指向的内存区域已经分配并且不会被释放,否则可能导致程序崩溃或数据损坏。
同时,在使用指针操作时,还需要注意指针的类型和大小,以确保指针操作的正确性和有效性。
c语言链表指针编程题
以下是一个使用链表和指针的 C 语言编程题:题目:将一个无序整数数组按照升序排列,并存储在链表中。
要求:1.定义一个链表节点结构体,包含一个整数和一个指向下一个节点的指针。
2.实现一个函数,将无序整数数组按照升序排列,并将结果存储在链表中。
3.实现一个函数,遍历链表并输出每个节点的值。
示例:输入:复制代码无序整数数组:[3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]输出:复制代码链表节点值:[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]以下是一个可能的实现:c复制代码#include<stdio.h>#include<stdlib.h>// 定义链表节点结构体typedef struct Node {int value;struct Node* next;} Node;// 插入节点到链表尾部Node* insertNode(Node* head, int value) {Node* newNode = (Node*)malloc(sizeof(Node));newNode->value = value;newNode->next = NULL;if (head == NULL) {head = newNode;} else {Node* current = head;while (current->next != NULL) {current = current->next;}current->next = newNode;}return head;}// 将无序整数数组按照升序排列,并将结果存储在链表中Node* sortAndBuildList(int arr[], int n) {Node* head = NULL; // 头节点指针,初始为空for (int i = 0; i < n; i++) { // 将数组元素插入链表尾部head = insertNode(head, arr[i]);}// 对链表进行排序(可以使用快速排序、归并排序等算法)// 这里简单起见,只使用了冒泡排序算法进行排序,实际应用中应使用更高效的排序算法。
C语言程序设计课程作业A
C语言程序设计课程作业_A一、单选题1.(4分)设有以下定义int k=7, x=12;,则能使值为3的表达式是()∙ A. x%=(k%=5)∙ B. x%=(k-k%5)∙ C. x%=k∙ D. (x%=k)-(k%=5)答案D解析C语言程序设计/数据类型与运算/整型算术表达式2.(4分)以下程序的输出结果是? #include main() { int x=020,y=0x20,z=20; printf('%d,%d,%d ', x,y,z); }∙ A. 20,20,20∙ B. 32,16,20∙ C. 16,32,20∙ D. 20,32,20答案C解析C语言程序设计/数据类型及运算3.(4分)C语言中while和do while循环的主要区别是( )∙ A. do-while的循环至少无条件执行一次∙ B. while循环控制条件比do-while的循环控制条件严格∙ C. do-while允许从外部转入到循环体内∙ D. do-while的循环体不能是复合语句答案A解析C语言程序设计/循环程序设计/while语句与do-while语句4.(4分)执行语句scanf('%d,%d',&m,&n);使m和n的值分别为1和2,正确输入是( ) ∙ A. 1∙ B. 1 2∙ C. 1,2∙ D. 12,2答案C解析C语言程序设计/顺序程序设计/整型数据的格式输入5.(4分)sizeof(float)是( )∙ A. 一个双精度型表达式∙ B. 一个整型表达式∙ C. 一种函数调用∙ D. 一个不合法的表达式答案B解析C语言程序设计/数据类型与运算/实型变量存储6.(4分)下列选项中,不合法的C语言关键字是∙ A. auto∙ B. default∙ C. static∙ D. var答案D解析C语言程序设计/C语言概述7.(4分)下面程序的运行结果是( )#include main(){int a[6],i;for(i=1;i<6;i++){a[i]=9*(i-2+4*(i> 3))%5;printf('%2d',a[i]);}}∙ A. 4 0 4 0 4∙ B. -4 0 4 0 3∙ C. -4 0 4 4 3∙ D. -4 0 4 4 0答案C解析C语言程序设计/数组/二维数组与循环语句结合8.(4分)设有下面的程序段,char s[]='china'; char *p;p=s; 则下列正确的是( )∙ A. s和p完全相同∙ B. 数组s中的内容和指针变量p中的内容相等∙ C. s数组长度和p所指向的字符串长度相等∙ D. *p与s[0]相等答案D解析C语言程序设计/指针/数组与指针9.(4分)若已定义int a;下面对(1)(2)两个语句(1)int *p=&a; (2)*p=a;的正确解释是( ) ∙ A. 语句(1)和(2)中的*p含义相同,都表示给指针变量p赋值∙ B. (1)和(2)语句的执行结果,都是把变量a的地址赋给指针变量p∙ C. (1)在对p进行说明的同时进行初始化,使p指向a (2)将变量a的值赋给指针变量p ∙ D. (1)在对p进行说明的同时进行初始化,使p指向a (2)将变量a的值赋给*p答案D解析C语言程序设计/指针/地址与指针10.(4分)下面四个选项中,均是不合法的用户标识符的选项是( )∙ A. A,P_0,do∙ B. float,la0,_A∙ C. b-a,goto,int∙ D. _123,temp,INT答案C解析C语言程序设计/数据类型与运算/标识符11.(4分)在C语言中,全局变量的隐含存储类别是∙ A. static∙ B. extern∙ C. void∙ D. register答案B解析C语言程序设计/函数12.(4分)若有以下定义:char s[10]='include',*p=s;则不能代表字符u的表达式是( )∙ A. s[4]∙ B. s+4∙ C. *(p+4)∙ D. p+=4,*p答案B解析C语言程序设计/指针/字符串指针的引用13.(4分)下面程序#include main(){int y=10;do {y--;}while(--y);printf('%d ',y--);}的运行结果是( ) ∙ A. 1∙ B. -1∙ C. 8∙ D. 0答案D解析C语言程序设计/循环程序设计/do-while语句14.(4分)a为0111,b为0123,a、b、c均为无符号短整型变量,则语句printf('%o,%o,%o,%o',c=~a,c= a&b,c=a|b,c=a∧b)的输出结果为( )∙ A. 177666,101,133,32∙ B. 0177666,0123,0333,032∙ C. 0177666,0101,0133,032∙ D. 177666,0123,0133,034答案A解析C语言程序设计/位运算/异或运算符15.(4分)有一个函数原型如下所示: abc(float x,double y); 则该函数的返回类型为∙ A. void∙ B. double∙ C. int∙ D. float答案C解析C语言程序设计/函数16.(4分)在ASCII码表中可以看到每个小写字母的ASCII码比它相应的大写字母的ASCII码( ) ∙ A. 大32∙ B. 大64∙ C. 小32∙ D. 小64答案A解析C语言程序设计/数据类型与运算/字符常数比较17.(4分)执行以下程序后的输出结果是( )int w=3,z=7,x=10;printf('%d',x>10?x+100:x-10);printf('% d',w++||z++);printf('%d',!w>z);printf('%d',w&&z);∙ A. 0111∙ B. 1111∙ C. 0101∙ D. 0100答案C解析C语言程序设计/选择结构程序设计/条件运算符18.(4分)程序的三种基本结构是( )∙ A. 顺序结构,循环结构,递归结构∙ B. 顺序结构,循环结构,选择结构∙ C. 选择结构,循环结构,递归结构∙ D. 顺序结构,选择结构,递归结构答案B解析C语言程序设计/选择程序设计/程序结构19.(4分)设整型变量a值为9,则下列表达式中使b的值不为4的表达式( )∙ A. b=a/2∙ B. b=a%2∙ C. b=8-(3,a-5)∙ D. b=a>5?4:2解析C语言程序设计/数据类型与运算/整型算术表达式20.(4分)已有定义int k=2;int *p1,*p2;且p1,p2均指向变量k,下面不能正确执行的赋值语句是( ) ∙ A. k=*p1+*p2∙ B. p2=k∙ C. p1=p2∙ D. k=*p1*(*p2)答案B解析C语言程序设计/指针/指针变量的定义21.(4分)若有以下定义int a[5]={1,2,3,4,5},*p,i;i=3;p=a;,则对数组元素地址的正确引用是( ) ∙ A. &p∙ B. a++∙ C. &(p+1)∙ D. &p[i]答案D解析C语言程序设计/指针/数组指针的引用二、判断1.(4分)用typedef可以创建新的基本类型∙∙解析C语言程序设计/结构体与共用体2.(4分)在C 语言中,共用体类型属于构造类型∙∙答案正确解析C语言程序设计/数据类型与运算/构造数据类型3.(4分)strcmp3(char *s,char *t){for (;*t= =*s;){if (!*t) return 0; t++;s++;}return (*s-*t);}库函数strcmp(char*s,char*t)是功能相等的程序段∙∙答案正确解析C语言程序设计/指针/指针作为函数参数4.(4分)C语言程序中,一个文件中的函数可以引用另一个文件中的函数和变量∙∙答案正确解析C语言程序设计/文件一、单选题1.(4分)在C语言中,反斜杠符是( )∙ A. \n∙ B. \t∙ C. \v∙ D. \\答案D解析C语言程序设计/数据类型与运算/字符常数表示形式2.(4分)执行下列程序段后, int x=10,y=9;int a,b,c;a=(--x= =y++)?--x:++y;b=x++;c=y; 变量a,b, c的值分别是( )∙ A. a=9,b=9,c=9∙ B. a=8,b=8,c=10∙ C. a=9,b=10,c=9∙ D. a=8,b=8,c=9答案B解析C语言程序设计/选择结构程序设计/条件与算术运算符3.(4分)判断char型变量c1是否小写字母的正确表达式为∙ A. 'a'<=c1<='z'∙ B. (c1>='a')&&(c1<='z')∙ C. (c1>=a)&&(c1<=z)∙ D. ('a'<=c1)||('z'>=c1)答案B解析C语言程序设计/数据类型及运算4.(4分)阅读以下程序,int w=1,x=2,y=3,z=4,m;m=w∙ A. 1∙ B. 2∙ C. 3∙ D. 4答案A解析C语言程序设计/选择结构程序设计/条件运算符嵌套5.(4分)在C语言中运算符的优先级从高到低的排列顺序是∙ A. 关系运算符算术运算符赋值运算符∙ B. 算术运算符赋值运算符关系运算符∙ C. 赋值运算符关系运算符算术运算符∙ D. 算术运算符关系运算符赋值运算符答案D解析C语言程序设计/数据类型及运算6.(4分)若有以下定义, int k=7,x=12, 则能使值为3的表达式是( ) ∙ A. x%=k%=5∙ B. x%=k-k%5∙ C. x%=(k-k%5)∙ D. (x%=k)-(k%=5)答案D解析C语言程序设计/数据类型与运算/算术表达式7.(4分)设有以下定义int k=7, x=12;,则能使值为3的表达式是()∙ A. x%=(k%=5)∙ B. x%=(k-k%5)∙ C. x%=k∙ D. (x%=k)-(k%=5)答案D解析C语言程序设计/数据类型与运算/整型算术表达式8.(4分)设有以下程序片段:char s[ ]='Program!';char *p;p=s;则执行完上面的程序段后,*(p+8)的值为( )∙ A. !'∙ B. '\0'∙ C. 'm'∙ D. 不定值答案B解析C语言程序设计/指针/字符串指针的引用9.(4分)C语言中合法的字符常量是∙ A. ’\\’∙ B. ”H”∙ C. ’He’∙ D. p答案A解析C语言程序设计/数据类型及运算10.(4分)以下read函数的调用形式中,参数类型正确的是( )∙ A. read(int fd,char *buf,int count)∙ B. read(int *buf,int fd,int count)∙ C. read(int fd,int count,char *buf)∙ D. read(int count,char *buf,int fd)答案A解析C语言程序设计/文件/文件的读和写11.(4分)设有以下程序片段:char a[ ]='hello',*p;p=a;printf('%d',*(p+5));执行上面的程序片段后的结果为( )∙ A. 111∙ B. 0∙ C. 104∙ D. 不确定的值答案B解析C语言程序设计/指针/数组元素的引用12.(4分)以下程序main(){int x=10,y=10;printf('%d %d ',x--,--y);}的输出结果是( ) ∙ A. 10 10∙ B. 9 9∙ C. 9 10∙ D. 10 9答案D解析C语言程序设计/顺序程序设计/整型变量的输出格式和算术运算符13.(4分)以下函数的功能对应于int fun(char *s,char *t) { while (*s)&&(*t)&&(*t==*s)} { t++; s ++; } return(*s-*t); }∙ A. strlen(s)+strlen(t)∙ B. strcmp(s,t)∙ C. strcpy(s,t)∙ D. strcat(s,t)答案B解析C语言程序设计/循环控制14.(4分)C语言规定,函数返回值的类型是由( )所决定。
C++程序设计作业2
C++程序设计作业2单项选择题第1题下面不正确的字符串常量是()。
A、abc'B、"12'12"C、"0"D、""答案:A第2题关于void 指针,下列说法正确的是()。
A、void 指针就是未指向任何数据的指针B、void 指针就是已定义而未初始化的指针C、指向任何类型数据的指针可直接赋值给一个void 指针;D、void 指针值可直接赋给一个非void 指针答案:C第3题假定变量a和pa定义为“double a[10], *pa=a;”,要将12.35赋值给a中的下标为5的元素,不正确的语句是()。
A、pa[5]=12.35;B、a[5]=12.35;C、*(pa+5)=12.35;D、*(a[0]+5)=12.35;答案:D第4题若用数组名作为函数调用的实参,传递给形参的是()。
A、数组的首地址B、数组中第一个元素的值C、数组全部元素的值D、数组元素的个数答案:A第5题strcmp(str1,str2)<0 表示()。
A、str1的长度小于str2B、str1的长度大于str2C、str1小于str2D、str1的内容小于str2的内容答案:D第6题在下面的二维数组定义中,正确的是( )。
A、int a[5][];B、int a[][5];C、int a[][3]={{1,3,5},{2}};D、int a[](10);答案:C第7题假定一个二维数组的定义语句为“int a[3][4]={{3,4},{2,8,6}};”,则元素a[2][1]的值为()。
A、0B、4C、8D、6答案:A第8题声明或定义一个内联函数时,必须在函数开始使用保留字()。
A、StaticB、ConstC、inlineD、extern答案:C第9题要使语句“p=new int[10][20];”能够正常执行,p应被事先定义为()。
A、int *p;B、int **p;C、int *p[20];D、int (*p)[20];答案:D第10题下列语句执行后,输出i的值是()。
C语言程设计实验与案例周信东主编实验八 指针
实验6 指针学号:1700200224姓名:莫新锋实验日期:一、实验目的和要求(1)掌握指针的概念、指针变量定义和引用。
(2)掌握指针的运用方法。
(3)掌握数组的指针和指向数组的指针变量。
(4)掌握指针与函数的关系。
(5)能正确使用字符串的指针和指向字符串的指针变量。
(6)了解指向函数的指针。
(7)了解指向指针变量的指针的概念及其使用方法。
二、实验内容完成实验指导书中的实验八“基础部分”和“增强部分”的题目。
实验九的内容由同学自行选作。
三、实验步骤及结果【基础题】:Ex8-1请在下面分别插入改正错误后的源程序代码及运行成功时的画面源程序代码:请在此粘贴修改后正确的程序代码。
、#include<stdio.h>//#define N 12void main(){int j, a[12],*p=a;//p=&a[N];for(j=1;j<=12;j++)scanf("%d",p);for(j=1;j<=12;j++){printf("%d",p++);if(j%4==0)printf("\n");}}运行结果:请在此粘贴本程序运行结果的截图Ex8-2请在下面插入该程序的运行结果的画面:运行结果:#include<stdio.h>swap(int *pl,int *p2){int p;p=*pl;*pl=*p2;*p2=p;}void main(){int n1,n2,n3;int *p1,*p2,*p3;printf("Input n1,n2,n3: ");scanf("%d,%d,%d",&n1 ,&n2,&n3);p1=&n1;p2=&n2;p3=&n3;if (n1>n2)swap(p1,p2);if (n1>n3)swap(p1,p3);if(n2>n3)swap(p2,p3);printf("The result is:%d %d %dn",n1,n2,n3);}请在此粘贴本程序运行结果的截图试用解释本程序是如何通过指针参数p1、p2改变主函数main中的变量n1、n2、n3的值的?请回答问题将n1,n2,n3的地址分别给p1,p2,p3,通过对n1,n2,n3两两的比较,调用函数swap进行排序,进而得到新的地址排序后输出【增强题】:Eh8-1请在下面分别完成本题的源程序代码及运行结果的画面:源程序代码:请在此粘贴完成本题的程序源代码。
C语言程序设计作业五(指针,文件)
C语言程序设计作业五1.对于类型相同的指针变量,不能进行哪种运算?(单选)A. +B. -C. =D. = =2. 若有以下说明和语句,且0<=i<10, 则下面哪个是对数组元素的错误引用?(单选)int a[]={1,2,3,4,5,6,7,8,9,0}, *p, i;p=a;A. *(a+i)B. a[p-a]C. p+iD. *(&a[i])3. 若有以下说明和语句,且0<=i<10,则下面哪个是对数组元素地址的正确表示?(单选)int a[]={1,2,3,4,5,6,7,8,9,0}, *p,i;p=a;A. &(a+1)B. a++C. &pD. &p[i]4. 以下程序的输出结果是___。
#include <stdio.h>main(){int a[]={1,2,3,4,5,6},*p;p=a;*(p+3)+=2;printf("%d,%d\n",*p,*(p+3));}A. 0,5B. 1,5C. 0,6D. 1,65. 以下程序的输出结果是哪一项?(单选)#include <stdio.h>main(){int a[12]={1,2,3,4,5,6,7,8,9,10,11,12}, *p[4],i;for(i=0;i<4;i++)p[i]=&a[i*3];printf("%d\n",p[3][2]);}A. 输出项不合法B. 6C. 8D. 126. 如果有以下的定义:(多选)struct person{char name[20];int age;char sex;};struct person a={"xiao min",20,'m'},*p=&a;则对字符串"li ning"的引用方式可以是下面哪些?A. (*p).nameB. C. D. p->name7. 下面哪些定义的结构在内存分配是等价的。
C语言程序设计 实验11.1_指针数组、指针与函数
scanf("%d",&repeat);
getchar();
for(ri=1;ri<=repeat;ri++){
scanf("%s",str);
count=0;
for(i=0;i<7;i++){
if(strcmp(str,date[i])==0){
color[index]=color[i];
color[i]=temp;
}
for(i = 0; i < n; i++)
printf("%s ", color[i]);
printf("\n");
}
2 编程题
/*---程序填空,不要改变与输入输出有关的语句。输入一个正整数repeat (0<repeat<10),做repeat次下列运算:编写程序,输入一个月份,输出对应的英文名称,要求用指针数组表示12个月的英文名称。若输入月份错误,输出提示信息。输入输出示例:括号内为说明
用字符指针实现函数str_cat(s,t),将字符串t复制到字符串s的末端,并且返回字符串s的首地址,并编写主程序。
例:(括号内为说明)
输入
abc
def
输出
abcdef
------*/
#include <stdio.h>
#include <string.h>
char *str_cat(char *s,char *t);
void main()
{
char s[80],t[80];
c语言指针编程题及详解
c语言指针编程题及详解c语言指针编程是一门用于编程的常见开发技术,通过指针的操作,可以让程序具备更强的表达能力,并且可以极大的减少代码的重复性。
根据其特性,以下列出了c语言指针编程的常见题目及详细解答:一、给定一个整型数组,使用指针把数组中的数字复制到另一个数组中相同的位置:解:#include<stdio.h>int main(){int *ptr1, *ptr2;int array1[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};int array2[10];ptr1 = array1; //设置指针1指向数组1的第一个元素ptr2 = array2; //设置指针2指向数组2的第一个元素while (ptr1<array1+10){ //当指针1指向的位置小于数组1的最后一个元素时,循环执行以下步骤*ptr2 = *ptr1; //将指针1指向的值赋值给指针2指向的位置ptr1++; //指针1指向下一个数组1中的元素ptr2++; //指针2指向下一个数组2中的元素}return 0;}二、给定两个整型数组,使用指针比较数组元素的大小:解:#include<stdio.h>int main(){int *ptr1, *ptr2;int array1[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};int array2[10] = {11, 12, 13, 14, 15, 16, 17, 18, 19, 20};ptr1 = array1; //设置指针1指向数组1的第一个元素ptr2 = array2; //设置指针2指向数组2的第一个元素while (ptr1<array1+10) { //当指针1指向的位置小于数组1的最后一个元素时,循环执行以下步骤if (*ptr1 > *ptr2) {printf("数组1元素大于数组2元素\n");} else if (*ptr1 < *ptr2) {printf("数组1元素小于数组2元素\n");} else {printf("数组1元素等于数组2元素\n");}ptr1++; //指针1指向下一个数组1中的元素ptr2++; //指针2指向下一个数组2中的元素}return 0;}三、用指针计算数组的最大值及最小值:解:#include<stdio.h>int main(){int *ptr, max, min;int array[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};//定义指针及最大最小值变量ptr = array;max = *ptr;min = *ptr;//开始循环比较for (ptr=array; ptr<array+10; ptr++){if (*ptr > max) {max = *ptr; //将指针指向元素的值与最大值进行比较,如果指向元素的值大,在赋值给最大值}if(*ptr < min){min = *ptr; //将指针指向元素的值与最小值进行比较,如果指向元素的值小,在赋值给最小值}}printf("max is %d , min is %d\n", max, min); return 0;}四、从指定的字符组件中取得字符串:解:#include <stdio.h>int main(){char arr[12] = "Hello World!", *str;str = &arr[6];printf("String is : %s\n", str);return 0;}。
C语言程序设计字符串-指针-字符串指针
C语言程序设计字符串-指针-字符串指针一、单项选择题(50题)1、\、/、mod、*等4个算术运算符中,优先级最低的是________。
A、\B、/C、ModD、*2、若有定义: char str1[10] = "aaaaaaa";char str2[10] = "bbbbb";将字符串str2连接到str1,则下列描述中正确的是________。
A、strcat(str1,str2)可以将字符串str2连接到str1中B、strncat(str1,str2,strlen(str2))可以将字符串str2连接到str1中C、strncat(str1,str2,2)可以将字符串str2的前两个字符连接到str1中D、strncat(str1,str2,4)可以将字符串str2的前四个字符连接到str1中3、从键盘上输入某字符串时,不可使用的函数是()。
A、getchar()B、gets()C、scanf()D、fread()4、字符串 "\\\"abc\"\\" 的长度是______。
A、11B、7C、5D、35、设有以下语句, 若 0<k<4,下列选项中对字符串的非法引用是()。
char str[4][2]={"aaa","bbb","ccc","ddd"},*strp[4];int j;for (j=0;j<4;j++)strp[j]=str[j];A、strpB、str[k]C、strp[k]D、*strp6、以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是________。
A、char s[10]=”abcdefg”;B、char t[]=”abcdefg”,*s=t;C、char s[10];s=”abcdefg”;D、char s[10];strcpy(s,”abcdefg”);7、下列能正确进行字符串赋值的是________。
浙大《C程序设计》练习题指针和数组
第10章指针和数组1.设int x[4]={10,20,30,40}, y, *p=&x[1];则执行语句y=(*--p)++;后变量y的值为_____。
2.下列程序片段中不正确的字符串赋值或初始化方式是_____。
A. char *str; str="string";B. char str[7]={'s','t','r','i','n','g','\0'};C. char str[10]; str="string";D. char str []="string";3.有以下定义及语句,则对数组a元素的不正确引用的表达式是_____。
int a[4][5];*p[2],j;for (j = 0 ; j <4 ; j++)p[j]=a[j];A. p[0][0]B. *(a+3)[4]C. *(p[1]+2)D. *(&a[0][0]+3)4.若有下列的程序段,则对数组元素的错误引用是_____。
int a[12] = {0}, *p[3], ** pp, j;for (j = 0 ; j < 3 ; j++)p[j]=&a[j*4];pp = p ;A. pp[0][1]B. a[10]C. p[3][1]D. *(*(p+2)+2)5.如有以下定义和语句,int a[5]={ 9,8,7,6,5}, *p ;p=&a[3];则*--p的值是_____。
6.若有定义:int a[3][2]={2,4,6,8,10,12}; 则*a[1]+1的值是_____。
7.下述函数通过递归方法将字符串倒置,使用时需要指定字符数组的首地址、起始下标。
请填空。
#include<stdio.h>void fun(char *s,int low,int high){if ( )return;else{char t;fun( );t=s[low];s[low]=s[high];s[high]=t;}}8.阅读以下程序说明和C程序,把应填的内容写入空格处。
C语言程序设计 指针
实验6 指针学号:姓名:实验日期:一、实验目的和要求(1)掌握指针的概念、指针变量定义和引用。
(2)掌握指针的运用方法。
(3)掌握数组的指针和指向数组的指针变量。
(4)掌握指针与函数的关系。
(5)能正确使用字符串的指针和指向字符串的指针变量。
(6)了解指向函数的指针。
(7)了解指向指针变量的指针的概念及其使用方法。
二、实验内容(注意:由于本实验报告模板中已经有题目内容,故源代码中无需再附上教材上的题目编号信息,只需有你的学号和姓名信息即可。
以下所有题目都要求代码与运行结果一起截图,只有在代码实在过多无法一起截图情况下,才能分开截图)1、【编写程序】请用指针编程实现:从键盘输入10个数,求出其中的最小值。
提示:定义函数lookup(int *str,int *a,int n)查找数组str中的最小值,将数组中的每一个数跟第一个数进行比较,最后得到最小的数。
2、【编写程序】请用指针编程实现:编写函数change(char *s,int *p),将字符串s 中的数字字符转换成数字存储到整型数组p中,函数返回转换后的数字的个数。
提示:先检测字符是否为数字,数字的ASCII码值为30H~39H,逐个判断s中的字符,如果是数字字符,则将其转换成数字存储到整型数组中。
3、【编写程序】请用指针编程实现:先读入10个整数,然后把它们按从大到小的次序排列起来,最后再读入一个整数k,并将k插入到该整数数列中,插入后的数列仍然按从大到小的顺序排列。
要求:编写一个函数实现排序功能。
4、【编写程序】请用指针编程实现:从键盘输入一个字符串,判断输入的字符串是否为回文。
(回文是指正序和反序字符排例方式相同的字符串,如abcdcba是回文)。
5、【编写程序】请用指针编程实现:写一个函数,实现两个字符串的比较。
即自己写一个strcmpa函数,函数原型为:int strcmpa(char *p1,char *p2),若两个字符串相等则返回0,否则返回这两个字符串第一个不同字符的ASCII码差值。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验10 指针程序设计
一、实验目的
1.掌握指针的基本概念,学习指针变量的定义和使用方法。
2.掌握指针在数组中的应用。
3.学习利用指针处理字符数组。
4.掌握指针数组、指向指针的指针。
二、实验预备知识
1.指针变量的定义、赋值和使用。
2.与指针相关的2个运算符:取地址运算符(&)和间接运算符(*)。
3.通过指针访问数组元素的各种方法。
三、实验内容
编写程序,实现以下功能。
1.利用指针交换2个数据。
2.利用指针找出10个数中的最大数及其位置。
3.利用指针将10个数排序。
4.利用指针分别统计一串字符中的大、小写字母的个数。
5.利用指针将10个学生的姓名排序。
6.利用指针实现2个字符串的连接。
7.利用指针计算2个矩阵的和。
8.利用指针实现由键盘任意输入一串字符,将此字符串倒置。
9.利用指针实现由键盘任意输入一串字符,再输入一个字符,在此串字符中查找是否有此字符,如果有从此串字符中删除此字符。
如:原串为abcdef,删除字符为c,新串为abdef。
10.利用指向指针的指针或指针数组,计算二维数组的平均数。
四、实验分析
1.总结指针使用的基本规律。
2.总结通过指针访问数组元素的各种方法。
五、实验报告
1.在实验过程中,将每一个程序的源代码保存,如1.C、2.C、3.C、。
、10.C。
2.建立本人学号和姓名为名称的文件夹,如:2013211234王军-11,将每一个程序的源代码存入此文件夹。
3.将此文件夹上传到:上传作业\教师名\班级名,如:上传作业\李明\光信13-1。