C语言程序设计 指针-答案

合集下载

C语言程序设计指针答案

C语言程序设计指针答案

C语言程序设计上机指针注:本次上机无需上交上机报告。

一、选择题1. 变量的指针,其含义是指该变量的()。

A. 值B. 地址C. 名D. 一个标志2. 已有定义int k=2,*ptr1,*ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是()。

A. k=*ptr1+*ptr2B. ptr2=kC. ptr1=ptr2D. k=*ptr1*(*ptr2)3. 若有说明:int *p,m=5,n; 以下程序段正确的是()。

A. p=&n; scanf(“%d”,&p);B. p = &n ; scanf(“%d”,*p);C. scanf(“%d”,&n); *p=n ;D. p = &n ; *p = m ;4. 若有说明:int *p1, *p2,m=5,n;以下均是正确赋值语句的选项是()。

A. p1=&m; p2=&p1 ;B. p1=&m; p2=&n; *p1=*p2 ;C. p1=&m; p2=p1 ;D. p1=&m; *p1=*p2 ;5. 若有语句:int *p,a=4;和p=&a;下面均代表地址的一组选项是()。

A. a, p, *&aB. &*a,&a,*pC. *&p,*p,&aD. &a,&*p,p6. 下面程序段中,for循环的执行次数是()。

A. 9B. 7C. 6D. 5char *s=”\ta\018bc” ;for ( ; *s!=’\0’ ; s++) printf(“*”) ;7. 下面不能正确进行字符串赋值操作的是()。

A. char s[5]={“ABCDE”};B. char s[5]={‘A’,’B’,’C’,’D’,’E’};C. char *s ; s=”ABCDE” ;D. char *s; scanf(“%s”,s) ;s无初值。

C语言指针精选习题和答案(精心整理)

C语言指针精选习题和答案(精心整理)

一、用指针方法编写一个程序,输入3个整数,将它们按由小到大的顺序输出#include <stdio.h>void swap(int *pa,int *pb){int temp;temp = *pa;*pa = *pb;*pb = temp;}void main(){int a,b,c,temp;scanf("%d%d%d",&a,&b,&c);if(a>b)swap(&a,&b);if(b>c)swap(&b,&c);if(a>c)swap(&a,&c);printf("%d,%d,%d",a,b,c);}二、C语言用指针方法输入3个字符串按由小到大顺序输出#include "stdio.h"#include "string.h"int main(int argc, char* argv[]){char *t;char *p1=NULL,*p2=NULL,*p3=NULL;char ch1[20]={0},ch2[20]={0},ch3[20]={0};p1=ch1;p2=ch2;p3=ch3;printf("No1:");scanf("%s",p1);fflush(stdin);printf("No2:");scanf("%s",p2);fflush(stdin);printf("No3:");scanf("%s",p3);fflush(stdin);if(strcmp(p1,p2)>0){t=p1;p1=p2;p2=t;}if(strcmp(p1,p3)>0){t=p1;p1=p3;p3=t;}if(strcmp(p2,p3)>0){t=p2;p2=p3;p3=t;}printf("%s\n%s\n%s\n",p1,p2,p3);return 0;}9.4编程输入一行文字,找出其中的大写字母,小写字母,空格,数字,及其他字符的个数#include<stdio.h>void main(){int a=0,b=0,c=0,d=0,e=0,i=0;char *p,s[20];while((s[i]=getchar())!='\n')i++;p=s;while(*p!=10){if(*p>='A'&&*p<='Z')a++;else if(*p>='a'&&*p<='z')b++;else if(*p==' ')c++;else if(*p>='0'&&*p<='9')d++;else e++;p++;}printf("大写字母 %d 小写字母 %d\n",a,b);printf("空格 %d 数字 %d 非字符 %d\n",c,d,e);}9.5写一个函数,将3 3矩阵转置#include "stdio.h"void Transpose(int (*matrix)[3]){int temp;int i, j;for(i=1;i<3;i++)/*转置*/{for(j=0;j<i;j++){temp = *(*(matrix+j)+i);*(*(matrix+j)+i) = *(*(matrix+i)+j); *(*(matrix+i)+j) = temp;}}}void main(){int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}};Transpose(a);for(int i = 0;i<3;i++){for(int j=0;j<3;j++){printf("%d ",a[i][j]);}printf("\n");}}}9.6用指向一维数组的指针做函数参数#include<stdio.h>#include<string.h>int main(){void sort(char (*s)[6]);//一维数组的指针做函数参数int i;char str[10][6];char (*p)[6];//定义一维数组的指针做函数参数printf("please input string:/n");for(i=0;i<10;i++)scanf("%s",&str[i]);p=str;//将str一维数组指针,赋值给p;sort(p);printf("the output sequence :/n");for(i=0;i<10;i++)printf("%s/n",str[i]);return 0;}void sort(char (*s)[6])//s指向一维数组的指针做函数参数;{int i,j;char temp[6], *t;t=temp;for(i=0;i<9;i++)//i应该小于9;如果小于10,那么就比较了9+1次;按照冒泡法则,for(j=0;j<9-i;j++)//第一次比较需要9次就是i=0到i=8共九次;第二次需要比较8次;依次类推;if(strcmp(s[j],s[j+1])>0){strcpy(t,s[j]);strcpy(s[j],s[j+1]);strcpy(s[j+1],t);}}9.7编一程序,用指针数组在主函数中输入十个等长的字符串。

谭浩强版C语言的第十章《指针》答案

谭浩强版C语言的第十章《指针》答案

谭浩强版C语言的第十章《指针》答案第十章《指针》答案如下inc/testPtr.h#include <string.h>#include <ctype.h>#include <math.h>#include <assert.h>#define SIZE 1024int a2i(char *start, char *end){int size = 0, ret = 0;long base = 0;size = end - start + 1;base = (long)pow(10, size - 1);while(size-- > 0){ret += (*start++ - '0') * base;base /= 10;}return ret;}int extraNum(char *str, int arr[]){int ite = 0, counter = 0;char *start = NULL, *end = NULL;while(*str != '\0'){if(isdigit(*str)){start = end = str;while( isdigit(*end) && *end != '\0'){++end;}arr[ite++] = a2i(start, end-1);str = end;}else{str++;}}return ite;}int sortStr(char *arr[], int size){int ite1 = 0, ite2 = 0, minPos = 0;char *tmp;for(ite1 = 0; ite1 < size - 1; ite1++){minPos = ite1;for(ite2 = ite1 + 1; ite2 < size; ++ite2 ){if( strcmp(arr[ite2], arr[minPos]) < 0 ){minPos = ite2;}}if(minPos != ite1){tmp = arr[minPos];arr[minPos] = arr[ite1];arr[ite1] = tmp;}}return 0;}int sort(int arr[], int size){int minPos = 0, ite1 = 0, ite2 = 0, tmp = 0;for(ite1 = 0; ite1 < size - 1; ite1++){minPos = ite1;for(ite2 = ite1 + 1; ite2 < size; ite2++){if( arr[ite2] < arr[minPos] ){minPos = ite2;}}if(minPos != ite1){tmp = arr[ite1];arr[ite1] = arr[minPos];arr[minPos] = tmp;}}return 0;}int sortPtr(int arr[], int size){int minPos = 0, ite1 = 0, ite2 = 0, tmp = 0;for(ite1 = 0; ite1 < size - 1; ite1++){minPos = ite1;for(ite2 = ite1 + 1; ite2 < size; ite2++){if( *(arr + ite2) < *(arr + minPos) ){minPos = ite2;}}if(minPos != ite1){tmp = *(arr + ite1);*(arr + ite1) = *(arr + minPos);*(arr + minPos) = tmp;}}return 0;}int getMultiArr(int arr[][5], int n){int i = 0, j = 0, min = 0, tmp = 0, size = 5 * n;int *p = NULL, pos[size];/* copy */p = (int *)malloc(size * sizeof(int));assert(p != NULL);memcpy(p, arr, size * sizeof(int));/* sort */for(i = 0; i < size - 1; i++){min = i;for(j = i + 1; j < size; j++){if( *(p + j) < *(p + min)){min = j;}}if(min != i){tmp = *(p + min);*(p + min) = *(p + i);*(p + i) = tmp;}}/* move */for(i = 0; i < n; i++){for(j = 0; j < 5; j++){if( *p == arr[i][j] ){tmp = arr[i][j];arr[i][j] = arr[0][0];arr[0][0] = tmp;continue;}if( *(p + 1) == arr[i][j] ){tmp = arr[i][j];arr[i][j] = arr[0][4];arr[0][4] = tmp;continue;}if( *(p + 2) == arr[i][j] ){tmp = arr[i][j];arr[i][j] = arr[n - 1][0];arr[n - 1][0] = tmp;continue;}if( *(p + 3) == arr[i][j] ){tmp = arr[i][j];arr[i][j] = arr[n - 1][4];arr[n - 1][4] = tmp;continue;}if( *(p + size - 1) == arr[i][j] ){tmp = arr[i][j];arr[i][j] = arr[n/2][2];arr[n/2][2] = tmp;continue;}}}free(p);p = NULL;return 0;}int statStr(char *str){int upper = 0, lower = 0, space = 0, num = 0, other = 0;while(*str != '\0'){if(isdigit(*str)){num++;}else if (isupper(*str)){upper++;}else if (islower(*str)){lower++;}else if (isspace(*str)){space++;}else{other++;}str++;}assert(3 == upper);assert(5 == lower);assert(10 == num);assert(2 == space);assert(6 == other);return 0;}int average(int(*stu)[6], int classNum, int stuNum){int i = 0, ave = 0;for(i = 0; i < stuNum; i++){ave += (*(stu + i))[classNum];}ave /= stuNum;return ave;}int searchStu(int(*stu)[6], int stuNum){int counter = 0, i = 0, j = 1, stuCounter = 0;for (i = 0; i < stuNum; i++){counter =0;for(j = 1; j < 6; j++){if( (*(stu + i))[j] < 60 ){counter++;}}if(counter >= 2){stuCounter++;}}return stuCounter;}int moveInt(int arr[], int n, int m){int i = 0, *p = NULL;p = (int*)malloc(n * sizeof(int));assert(p != NULL);memcpy(p + m, arr, (n - m) * sizeof(int));memcpy(p, arr + n -m , m * sizeof(int));memcpy(arr, p, n * sizeof(int));free(p);p = NULL;return 0;}int myStrcmp(char *p1, char*p2){int ret = 0;while((*p1 != '\0') && (*p2 != '\0') && ( *p1 == *p2 ) ) {p1++;p2++;}if(*p1 == '\0'){ret = -1;}else if (*p2 == '\0'){ret = 1;}else{ret = (*p1 - *p2) > 0 ? 1 : -1;}return ret;}int revArr(int a[], int size){int tmp = 0, *start = NULL, *end = NULL;start = a;end = start + size - 1;size = size / 2;while(size >= 0){tmp = *(start + size);*(start + size) = *(end - size);*(end - size) = tmp;size--;}return 0;}char *getMonth(char *month[], int which) {assert(which <= 12);return ( *(month + which - 1));}int getStr(char *dest, char* src, int m) {int len = 0;len = strlen(src) + 1 - m;src = src + m - 1;memcpy(dest, src, len * sizeof(char));return 0;}int removePer3(int arr[], int size){int i = 0;for(i = 0; i < size; i++){if(((arr[i]) % 3) == 0){arr[i] = 0;}}return 0;}int getMinMax(int a[], int size){int i = 0, min = 0, max = 0, tmp = 0;min = max = 0;for(i = 0; i < size; i++){if (a[i] <= a[min]){min = i;}if(a[i] >= a[max]){max = i;}}tmp = a[0];a[0] = a[min];a[min] = tmp;tmp = a[size - 1];a[size - 1] = a[max];a[max] = tmp;}int test_10_1(){int ite = 0, iRet = 0, arr[5] = {121, 234, 456456, 543, 23};iRet = sortPtr(arr, 5);assert (23 == arr[0]);assert (121 == arr[1]);assert (234 == arr[2]);assert (543 == arr[3]);assert (456456 == arr[4]);printf("\r\nTest_10_1 Passed!");return 0;}int test_10_2(){int ite = 0, iRet = 0;char *arr[10] = { "In the IBM Rational ClearCase environment", \"An auditable history of source files and software builds is maintained in your organization", \"The efforts of your team can be coordinated into a definable"};iRet = sortStr(arr, 3);assert( strcmp(arr[0], "An auditable history of source files and software builds is maintained in your organization") == 0 );assert( strcmp(arr[1], "In the IBM Rational ClearCase environment") == 0);assert( strcmp(arr[2], "The efforts of your team can be coordinated into a definable") == 0);printf("\r\nTest_10_2 Passed!");return 0;}int test_10_3(){int ret = 0, a[10] = {7,2,3,9,1,0,7,6,5,0};ret = getMinMax(a, 10);assert(a[0] == 0);assert(a[9] == 9);printf("\r\nTest_10_3 Passed!");return 0;}int test_10_4(){int ret = 0, arr[9] = {0, 1, 2, 3, 4, 5, 6, 7, 8};ret = moveInt(arr, 9, 3);assert(6 == arr[0]);assert(7 == arr[1]);assert(8 == arr[2]);assert(0 == arr[3]);assert(1 == arr[4]);assert(2 == arr[5]);assert(3 == arr[6]);assert(4 == arr[7]);assert(5 == arr[8]);printf("\r\nTest_10_4 Passed!");return 0;}int test_10_5(){int ret = 0, i = 0, a[12] = {1,2,3,4,5,6,7,8,9,10,11,12};ret = removePer3(a, 12);assert(a[2] == 0);assert(a[5] == 0);assert(a[8] == 0);assert(a[11] == 0);printf("\r\nTest_10_5 Passed!");return 0;}int test_10_7(){int ret = 0;char s2[100] = {0}, *s1 = "hello world!";getStr(s2, s1, 7);assert( strcmp(s2, "world!") == 0);printf("\r\nTest_10_7 Passed!");return 0;}int test_10_8(){int ret = 0;char *str = "a123xABC ??#$%^ 302tab5876";ret = statStr(str);if(ret == 0){printf("\r\nTest_10_8 Passed!");}return 0;}int test_10_10(){int i = 0, j = 0, ret = 0;int arr[5][5] = { \{16, 17, 18, 19, 20}, \{11, 12, 13, 14, 15}, \{1, 2, 3, 4, 5}, \{21, 22, 23, 24, 25}, \{6, 7, 8, 9, 10}, \};ret = getMultiArr(arr, 5);assert(1 == arr[0][0] );assert(2 == arr[0][4] );assert(3 == arr[4][0] );assert(4 == arr[4][4] );assert(25 == arr[2][2] );printf("\r\nTest_10_10 Passed!");return 0;}int test_10_11(){int ite = 0, iRet = 0;char *arr[10] = { "In the", \"An aud", \"The ef", \"Proces", \"Sets o", \"Unifie", \"Out-of", \"Practi", \"Ration", \"Explor" \};iRet = sortStr(arr, 10);assert( strcmp(arr[0], "An aud") == 0 );assert( strcmp(arr[1], "Explor") == 0);assert( strcmp(arr[2], "In the") == 0);assert( strcmp(arr[3], "Out-of") == 0);assert( strcmp(arr[4], "Practi") == 0);assert( strcmp(arr[5], "Proces") == 0);assert( strcmp(arr[6], "Ration") == 0);assert( strcmp(arr[7], "Sets o") == 0);assert( strcmp(arr[8], "The ef") == 0);assert( strcmp(arr[9], "Unifie") == 0);printf("\r\nTest_10_11 Passed!");return 0;}int test_10_12(){int ite = 0, iRet = 0;char *arr[10] = { "In the IBM Rational ClearCase environment", \"An auditable history of source files and software builds is maintained in your organization", \"The efforts of your team can be coordinated into a definable", \"Process by using one of the following", \"Sets of Rational ClearCase features", \"Unified Change Management (UCM),", \"Out-of-the-box process that supports best", \"Practices for change management as described in the IBM", \"Rational Unified Process. Project managers can configure", \"Explorer. For more information about Rational ClearCase"};iRet = sortStr(arr, 10);assert( strcmp(arr[0], "An auditable history of source files and software builds is maintained in your organization") == 0 );assert( strcmp(arr[1], "Explorer. For more information about Rational ClearCase") == 0);assert( strcmp(arr[2], "In the IBM Rational ClearCase environment") == 0);assert( strcmp(arr[3], "Out-of-the-box process that supports best") == 0);assert( strcmp(arr[4], "Practices for change management as described in the IBM") == 0);assert( strcmp(arr[5], "Process by using one of the following") == 0);assert( strcmp(arr[6], "Rational Unified Process. Project managers can configure") == 0);assert( strcmp(arr[7], "Sets of Rational ClearCase features") == 0);assert( strcmp(arr[8], "The efforts of your team can be coordinated into a definable") == 0);assert( strcmp(arr[9], "Unified Change Management (UCM),") == 0);printf("\r\nTest_10_12 Passed!");return 0;}int test_10_14(){int ret = 0, a[11] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};ret = revArr(a, 11);assert(10 == a[0]);assert(9 == a[1]);assert(8 == a[2]);assert(7 == a[3]);assert(6 == a[4]);assert(5 == a[5]);assert(4 == a[6]);assert(3 == a[7]);assert(2 == a[8]);assert(1 == a[9]);assert(0 == a[10]);printf("\r\nTest_10_14 Passed!");return 0;}int test_10_15(){int ave = 0, ret = 0;int student[4][6] = { \{1, 100, 90, 80, 70, 97}, \{2, 34, 45, 56, 78, 97}, \{3, 76, 34, 68, 84, 12}, \{4, 90, 90, 90, 75, 28} \};ave = average(student, 1, 4);ret = searchStu(student, 4);assert(75 == ave);assert(2 == ret);printf("\r\nTest_10_15 Passed!");return 0;}int test_10_16(){int iRet = 0, ite = 0, arr[SIZE] = {0};char *str = "a123x456 17960? 302tab5876";iRet = extraNum(str, arr);assert(123 == arr[0]);assert(456 == arr[1]);assert(17960 == arr[2]);assert(302 == arr[3]);assert(5876 == arr[4]);printf("\r\nTest_10_16 Passed!");return 0;}int test_10_17(){int ret = 0;char *s1 = "abcd", *s2 = "abCd";ret = myStrcmp(s1, s2);assert(ret == 1);char *s3 = "aBcd", *s4 = "abCd";ret = myStrcmp(s3, s4);assert(ret == -1);char *s5 = "abcde", *s6 = "abcd";ret = myStrcmp(s5, s6);assert(ret == 1);char *s7 = "abcd", *s8 = "abcde";ret = myStrcmp(s7, s8);assert(ret == -1);char *s9 = "abcd", *s10 = "abCde";ret = myStrcmp(s9, s10);assert(ret == 1);printf("\r\nTest_10_17 Passed!");return 0;}int test_10_18(){int which = 0;char *month[12] = { \"January", \"February", \"March", \"April", \"May", \"June", \"July", \"August", \"September", \"October", \"November", \"December" \};which = 11;assert( strcmp("November", getMonth(month, which)) == 0 );which = 7;assert( strcmp("July", getMonth(month, which)) == 0 );printf("\r\nTest_10_18 Passed!");return 0;}int test_10_20(){int ite = 0, iRet = 0;char *arr[5] = { "In the IBM Rational ClearCase environment", \"An auditable history of source files and software builds is maintained in your organization", \"The efforts of your team can be coordinated into a definable", \"Process by using one of the following", \"Sets of Rational ClearCase features" \};iRet = sortStr(arr, 5);assert( strcmp(arr[0], "An auditable history of source files and software builds is maintained in your organization") == 0 );assert( strcmp(arr[1], "In the IBM Rational ClearCase environment") == 0);assert( strcmp(arr[2], "Process by using one of the following") == 0);assert( strcmp(arr[3], "Sets of Rational ClearCase features") == 0);assert( strcmp(arr[4], "The efforts of your team can be coordinated into a definable") == 0);printf("\r\nTest_10_20 Passed!");return 0;}int test_10_21(){int ite = 0, iRet = 0, arr[5] = {121, 234, 456456, 543, 23};iRet = sort(arr, 5);assert (23 == arr[0]);assert (121 == arr[1]);assert (234 == arr[2]);assert (543 == arr[3]);assert (456456 == arr[4]);printf("\r\nTest_10_21 Passed!");return 0;}int testPtr(){int iRet = 0;#if 0#endifiRet += test_10_1();iRet += test_10_2();iRet += test_10_3();iRet += test_10_4();iRet += test_10_5();iRet += test_10_7();iRet += test_10_8();iRet += test_10_10();iRet += test_10_11();iRet += test_10_12();iRet += test_10_14();iRet += test_10_15();iRet += test_10_16();iRet += test_10_17();iRet += test_10_18();iRet += test_10_20();iRet += test_10_21();return iRet;}src/#include <stdio.h>#include <stdlib.h>#include <assert.h>#include "../inc/testFile.h" #include "../inc/testBits.h" #include "../inc/testPtr.h"int main(){int iRet = 0;#if 0iRet += testFile();assert(iRet == 0);iRet += testBits();assert(iRet == 0);#endifiRet += testPtr();assert(iRet == 0);return 0;}。

c语言指针的习题答案

c语言指针的习题答案

指针练习题1.有以下程序main(){char a[]="programming",b[]="language";char *p1,*p2;int i;p1=a;p2=b;for(i=0;i<7;i++)if(*(p1+i)==*(p2+i))printf("%c",*(p1+i));}输出结果是A)gm B)rg C)or D)ga2.设有说明int(*ptr)[m];其中的标识符ptr是A)M个指向整型变量的指针B)指向M个整型变量的函数指针C)一个指向具有M个整型元素的一维数组的指针D)具有M个指针元素的一维指针数组,每个元素都只能指向整型量3.若已定义:int a[9],*p=a;并在以后的语句中未改变p的值,不能表示a[1] 地址的表达式是A) p+1 B) a+1 C) a++ D) ++p4.若有语句int *point ,a=4;和point =&a;下面均代表地址的一组选项是A. a,point,*&aB. &*a,&a,*pointC. &point,*point,&aD. &a,&*point,point5.下面程序段的运行结果是char a[]=”language”,*p;p=a;while(*p!=’u’) {printf(“%c”, *p-32);p++;}A. LANGUAGEB. LANGuageNGngUAGE6.以下程序的运算结果是*p=1,m=3,n=5 。

#include<stdio.h>void main(){int a[5]={1,2,3,-4,5};int m,n,*p;p=&a[0];m=*(p+2);n=*(p+4);printf("*p=%d,m=%d,n=%d",*p,m,n);}7.写一通用函数slength,求出一个字符串的长度,并用main函数调用slength。

C语言程序设计(指针)期末单元测试与答案

C语言程序设计(指针)期末单元测试与答案

一、单选题1、若有说明:int n = 2,*p = &n,*q = p;则以下非法的赋值语句是()A.p = q;B.p = n;C.n = *q;D.*q = 3;正确答案:B解析:B、p为指针类型,即“地址箱”,要保存地址,而n为整型数,类型不匹配。

2、若有以下定义:int x, *pb;则正确的赋值表达式是()A.*pb = *x;B.pb = x;C.pb = &x;D.*pb = &x;正确答案:C解析:A、x是整型变量,普通变量前面加*,这是错误的,没有该语法D、运行时错误。

正确的是pb = &x; x的地址应放到“地址箱”即指针变量pb中,一定要注意“地址箱”即指针变量为pb,而非*pb。

如果写成*pb = &x;会出现什么问题呢?pb为随机指向的“野指针”,即随机指向一个空间,该语句试图吧&x 放入到该随机空间中,报运行时错误3、若定义:int a =511,*b = &a; 则printf("%d\n",*b); 的输出结果为()A.511B.无确定值C.512D.a的地址正确答案:A解析:A、b是指针变量,保存a的地址,那么*b就是a4、下面能正确进行字符串赋值操作的是()A.char *s;s ="abcde";B.char *s;scanf("%s",s);C.char s[5] ={'a','b','c','d','e'};D.char s[5] = {"abcde"};正确答案:A解析:B、编译不报错,运行时错误。

原因s指针随机指向一个空间,即野指针,不能试图把一个字符串输入到该随机空间中,运行时报错C、语法正确,但数组s中由于缺少字符串结束符'\0',故村的不是字符串,而是5个独立的字符。

C语言指针习题及答案

C语言指针习题及答案

C语言指针习题及答案指针主要内容的习题及答案?选择题1.变量的指针,其含义是指该变量的A)值B)地址B 。

D )一个标志C)名2.已有定义int k=2;int *ptr1,*ptr2; 且ptrl 和ptr2 均已指向变量k,下面不能正确执行的赋值语句是 B 。

A) k=*ptr1+*ptr2 B) ptr2=k C) ptr1=ptr2 D) k=*ptr1*(*ptr2)3. 若有说明:int *p,m=5,n;以下程序段正确的是 D _________ 。

A)p=&n ; B)p = &n ;seanf( %d”,&p);seanf( %d”,*p);C) seanf( %d”,&n);D)p = &n ;*p=n ; *p = m ;4. 已有变量定义和函数调用语句:int a=25;print_value(&a); 下面函数的输出结果是 D ___________ 。

void prin t_value(i nt *x){ printf( %d\n”,++*x); }A) 23 B) 24 C) 25 D) 265. 若有说明:int *p1, *p2,m=5,n; 以下均是正确赋值语句的选项是____C _______ 。

A) p仁&m p2=&p1 ; B) p仁&m p2=&n *p1 =*p2 ;C) p仁&m p2=p1 ; D) p仁&m *卩仁*p2 ;6. 若有语句:int *p,a=4;和p=&a;下面均代表地址的一组选项是__________D _____ 。

A) a,p,*&a B)&*a,&a,*p C)*&p,*p,&a D)&a,&*p,p7. 下面判断正确的是__C __________ 。

A) char *a=”ch in a”;等价于char *a; *a=”ch in a”;B) char str[1O]={ china”};等价于char str[1O]; str[ ]={ china”;}C) char *s=”china”;等价于char *s; s=”china” ;D) char c[4]=”abc',d[4]= ”abc”;等价于char c[4]=d[4]= ”abc ;8. 下面程序段中,for循环的执行次数是 C _________ 。

C语言指针习题及答案

C语言指针习题及答案

指针主要内容的习题及答案•选择题1. 变量的指针,其含义是指该变量的 __B ____________ 。

A )值 B )地址 C )名D)一个标志2.已有定义int k=2;int *ptr1,*ptr2; 且ptrl 和ptr2均已指向变量k ,下面不能正确执行的赋值语句是 B。

4.已有变量定义和函数调用语句:int a=25;print_value (&a );下面函数的输出结果是 D __________________void prin t_value(i nt *x) { printf(“ %d\n” ,++*x); }A) 23B) 24C) 25D) 265.若有说明:int *p1, *p2,m=5,n; 以下均是正确赋值语句的选项是 ____C ____________ 。

A)p 仁&m; p2=&p1 ;B ) p 仁&m; p2=&n; *p1 =*p2 ;C ) p 仁&m; p2=p1 ; D) p 仁&m; *p 仁*p2 ;6.若有语句:int *p,a=4;和p=&a ;下面均代表地址的一组选项是 ____________D _________ 。

A) a,p,*&a B)&*a,&a,*p C ) *&p,*p ,&a D )&a,&*p,p7. 下面判断正确的是__C _________________ 。

A) char *a= ” china ” ; 等价于 char *a; *a=” china ” ;B) char str[1O]={“ china ” };等价于 char str[1O]; str[ ]={“ china ” ;}C)char *s= ” china ” ; 等价于 char *s; s= ” china ” ;A) k=*ptr1+*ptr2 B ) ptr2=k C ) ptr1=ptr2 3.若有说明:int *p,m=5,n; A ) p=&n ; seanf(“ %d ,&p);C ) scanf( “ %d ,&n);*p=n ;以下程序段正确的是Bscanf ( D*p = m ;D ) k=*ptr1*(*pt ⑵ D。

C语言习题集答案(指针)

C语言习题集答案(指针)

C语言习题集答案(指针)第五章指针习题一.选择题1. 若定义int a=8,b,*p=&b; 则下面对赋值语句p=&a; *p=a; 的正确解释为【】。

A)两个语句都是使p指向aB)p=&a;是使p指向a,而*p=a是将a的值赋予*pC)两个语句都是将a的值赋予*pD)p=&a是将a的值赋予*p,而*p=a是使p指向a2. 若定义int b=8,*p=&b; 则下面均表示b的地址的一组选项为【】。

A)*p, *&b B)*p, &*bC)p, *&b, &*p D)&*p, p, &b3. 若定义int a,b,*p1=&a,*p2=&b; 使p1指向b的赋值语句是【】。

A)*p1=&b; B) p1=&p2;C)p1=*&p2; D) p1=*&b;4. 若定义int a,b,*p; 下述程序段中正确的是【】。

A)p=&a; scanf("%d",&p); B)scanf("%d",&a); *p=a;C)p=&a; scanf("%d",&b);*p=b; D)p=&a; scanf("%d",*p);5. 若有定义int a=7,b=9,*p1,*p2;下列赋值语句中,正确的是【】。

A)p2=&a;p1=&b;*&a=*p1; B)p1=&a;p2=*&p1;a=&*p2;C)p1=&b;p2=&p1;*p1=*p2; D)p2=*&a;p1=*&b;6. 执行下面程序段后,c的值是【】。

int a,b,c,*p;a=2;b=10;p=&a;c=a+b+*p;A)12 B)14 C)22 D)247. 若定义int i,*p; 使p指向i的赋值语句是【】。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C语言程序设计上机指针
注:本次上机无需上交上机报告。

一、选择题
1. 变量的指针,其含义是指该变量的()。

A. 值
B. 地址
C. 名
D. 一个标志
2. 已有定义int k=2,*ptr1,*ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是()。

A. k=*ptr1+*ptr2
B. ptr2=k
C. ptr1=ptr2
D. k=*ptr1*(*ptr2)
3. 若有说明:int *p,m=5,n; 以下程序段正确的是()。

A. p=&n; scanf(“%d”,&p);
B. p = &n ; scanf(“%d”,*p);
C. scanf(“%d”,&n); *p=n ;
D. p = &n ; *p = m ;
4. 若有说明:int *p1, *p2,m=5,n;以下均是正确赋值语句的选项是()。

A. p1=&m; p2=&p1 ;
B. p1=&m; p2=&n; *p1=*p2 ;
C. p1=&m; p2=p1 ;
D. p1=&m; *p1=*p2 ;
5. 若有语句:int *p,a=4;和p=&a;下面均代表地址的一组选项是()。

A. a, p, *&a
B. &*a,&a,*p
C. *&p,*p,&a
D. &a,&*p,p
6. 下面程序段中,for循环的执行次数是()。

A. 9
B. 7
C. 6
D. 5
char *s=”\ta\018bc” ;
for ( ; *s!=‟\0‟ ; s++) printf(“*”) ;
7. 下面不能正确进行字符串赋值操作的是()。

A. char s[5]={“ABCDE”};
B. char s[5]={…A‟,‟B‟,‟C‟,‟D‟,‟E‟};
C. char *s ; s=”ABCDE” ;
D. char *s; scanf(“%s”,s) ;s无初值。

8. 下面程序段的运行结果是()。

char *s=”abcde” ; s+=2 ; printf(“%s”,s);
A. cde
B. 字符‟c‟
C. 字符‟c‟的地址
D. 不确定
9. p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是()。

A. c=*p1+*p2
B. p2=c
C. p1=p2
D. c=*p1*(*p2)
10. 以下说明不正确的是()。

A. char a[10]=”china” ;
B. char a[10],*p=a; p=”china”;
C. char *a; a=”china” ;
D. char a[10],*p; p=a=”china”;
11. 若有定义:int a[5];则a数组中首元素的地址可以表示为()。

A. &a
B. a+1
C. a
D. &a[1]
12. 已有函数max(a,b),为了让函数指针变量p指向max,正确的方法是()。

A. p=max;
B. p=max(a,b);
C. *p=max;
D.
*p=max(a,b);
13. 对于类型相同的指针变量,不能进行哪种运算?
A. +
B. -
C. %
D. ==
14. 若有以下说明和语句,则p1-p2的值为多少?
int a[10], *p1, *p2; p1=a; p2=&a[5];
A. -5
B. 6
C. -10
D. 非法
15. main()函数可以带两个形参,一般分为argc和argv,其中argv可以定义为()。

A. int argv;
B. char * argv[];
C. char argv[];
D. char ** argv[];
16. 若有定义:int (*p)[4];则标识符p()。

A. 是一个指向整型变量的指针
B. 是一个指针数组名
C. 是一个指针,它指向一个含有四个整型元素的一维数组
D. 定义不合法
17. 以下与int *q[5];等价的定义语句是()。

A. int q[5]
B. int *q
C. int *(q[5])
D. int (*q)[5]
18. 已有定义int (*p)( );指针p可以()。

A. 代表函数的返回值
B. 指向函数的入口地址
C. 表示函数的类型
D. 表示函数返回值的类型
二. 填空题
1. 设int a[10]={1,2,3}; 则*(a+3)的值是_______0_________。

2. 设TC2.0中,int a[3][4] = {{2},{3}}; 若数组a的起始地址为2000,则a+1的地址值是_____2008________________。

3. 设int a[2][4],(*p)[4]=a; 用指针变量p表示数组元素a[1][2]为_____________。

4. 对于数据定义及说明:“ int *p, *q[10], (*r)(), *s(); ”,其中p,q,r,s的含义分别:
p指针变量,
q数组名,此数组中的所有元素都是指针变量,
r指向函数的指针,
s函数名,函数的返回值是指针。

5. 若有定义:int a[2][3]={2,4,6, 8,10,12};则*(&a[0][0]+2*2+1)的值是12 ,*(a[1]+2)的值是12 。

三. 程序分析题,写出以下程序的执行结果,先分析,再上机验证。

1. void del (char *s,char c )
{ int i,j;
for (i=j=0; s[i]!='\0'; i++)
if ( s[i] == c) s[j++]=s[i];
s[j]='\0';
}
main()
{ char s[]="the c language";
del(s,'g'); puts(s);
}
2. #include <stdio.h>
#include <string.h>
void fun(char *p,int n)
{ char *i,*j,t;
for (i=p,j=p+n-1; i<j; i++,j--)
{ t=*i; *i=*j; *j=t; }
}
main()
{ char s[]="1234567890";
fun(s,strlen(s)); puts(s);
}
3. #include "stdio.h"
main ( )
{ char *a[]={"Pascal","C Language","dBase","Java"};
char **p ;
int j ;
p = a+3;
for (j=3; j>=0; j--)
printf("%s\n",*(p--)) ;
}。

相关文档
最新文档