这是以前做过一些关于C++与C的一些基础性题目。现在拿出来,与大家共勉。
- 一个指针类型的对象占用内存的____4__个字节的存储空间.
- 一个指针类型指向一个数据对象,它保存着该数据对象的_起始地址__,若数据对象为DataType类型,则该指针的类型为__DataType*________.
- 若要把一个整形指针P转换为字符指针,则采用的强制转换表达式为__(char*)p_____.
- 假定一个数据对象为int *类型,则采用的强制转换表达式为________.
- 假定P是一个指向整数对象的指针,则用_ *p___表示该整数对象,用____&p_____表示指针变量P的地址.
- 假定P是一个指针,则*P++运算首先访问_____*p____,然后使__&p_____的值增1.
- 假定P是一个指针,则(*P)++运算首先访问_____*p______,然后使___*p______的值增1.
- 假定P所指对象的值为25,P+1所指对象的值为42,则*P++的值为__25_____.
- 假定P所指对象的值为25,P+1所指对象的指为42,则*++P的值为___42____.
- 假定P所指对象的值为25,P+1所指对象的值为42,则执行(*P)++运算后,P所指对象的值为__26_____.
- 假定P所指对象的值为25,P+1所指对象的值为42,则执行*(P++)或*P++运算后,P所指对象的值为__25_____.
- 假定A是一个一维数组,则A[i]的指针访问方式为_*(A+i)_______.
- 一个数组的数组名实际上是指向该数组___0_______元素的指针,并且在任何时候都不允许_改变______它.
- 若要定义整形指针P并初始指向X,则所使用的定义语句为____int *p=X___________.
- 若P指向X,则___*p___与X的表示是等价的.
- 在一个二维数组int a[m][n]中,包含的一维元素a[i]的类型为__int______,访问a[i]时返回值的类型为_int______.
- 假定a是一个二维数组,则a[i][j]的指针访问方式为__*(*(a+i)+j)__________.
- 若y是x的引用,则&y和&x的值_相同_____,即为变量__x____的地址.
- 招待int *p=new int[10]操作,使p指向动态分配的数组中下标为__[0]______的元素,该元素可表示为__p_____或____p[0]_____.
- 执行char *p=new char(‘a’)操作后,p所指向的数据对象的值为__65_______.
- 执行__ delete p[] _____操作将释放由P所指向的动态分配的数据空间.
- 执行___delete [] p_______操作将释放由P所指向的动态分配的数组空间.
1、有一个数列,它的第一项为0,第二项为1,以后每一项都是它的前二项之和,试产生出此数列的前20项,并按逆序显示出来.
1 #include<iostream> 2 using namespace std; 3 int main() 4 { int a[20]={0,1}; 5 int i; 6 int *p,*q; 7 p=a; 8 q=&a[1]; 9 for(i=2;i<20;i++) 10 a[i]=(*p++)+(*q++); 11 for (i=0;i<20;i++) 12 cout<<"a[i]="<<i<<"="<<a[i]<<endl; 13 return 0; 14 }
2、从键盘上输入一个字符串,假定该字符串的长度不超过30,试统计出该串中所有十进制数字字符个数.
1 #include<iostream> 2 #include<string> 3 using namespace std; 4 int n=0; 5 int main() 6 { char a[30]; 7 int i,b=0; 8 char *p; 9 p=&a[0]; 10 cout<<"输入字符串:"<<endl; 11 cin.getline(a,31); 12 while(*p++!='\0') 13 {b++;} 14 cout<<"the length="; 15 cout<<b<<endl; 16 for(i=0;i<b;i++) 17 if(a[i]>='0'&&a[i]<='9') 18 n++; 19 cout<<"n="<<n<<endl; 20 return 0; 21 }
3、首先从键盘上输入一个4行4列的一个实数矩阵列到一个二维数组中,然后求出主列角线上元素之乘积.
1 #include<iostream> 2 using namespace std; 3 int main() 4 { int a[4][4]; 5 int c=1; 6 int i,j; 7 for(i=0;i<4;i++) 8 for(j=0;j<4;j++) 9 scanf("%d",&a[i][j]); 10 for(i=0;i<4;i++) 11 {for(j=0;j<4;j++) 12 cout<<" "<<a[i][j]; 13 if(j=3) 14 cout<<endl; } 15 for(i=0;i<4;i++) 16 for(j=0;j<4;j++) 17 if(i=j) 18 c=c*a[i][j]; 19 cout<<"c="<<c<<endl; 20 return 0; 21 }
4、已知一个数组矩阵为,求出该矩阵的转置矩阵. 并输出出来,其中转置矩阵中的[i][j]位置上的元素等于矩阵中的[j][i]位置上的元素.
1 #include<iostream> 2 using namespace std; 3 int main() 4 { int a[4][3]; 5 int b[3][4]; 6 int i,j,k; 7 cout<<"输入矩阵"<<endl; 8 for(i=0;i<4;i++) 9 for(j=0;j<3;j++) 10 scanf("%d",&a[i][j]); 11 cout<<endl; 12 for(i=0;i<4;i++) 13 {for(j=0;j<3;j++) 14 cout<<" "<<a[i][j]; 15 if(j=3) 16 cout<<endl; } 17 for(i=0;i<4;i++) 18 for(j=0;j<3;j++) 19 for(k=0;k<3;k++) 20 b[k][j]=a[i][j]; 21 cout<<endl; 22 for(i=0;i<3;i++) 23 {for(j=0;j<4;j++) 24 cout<<" "<<b[i][j]; 25 if(j=3) 26 cout<<endl; } 27 return 0; 28 }
5、首先让计算机随机产生出10个两位正整数,然后按照从小到大的次序显示出来.
1 #include<iostream> 2 #include<time.h> 3 #include<stdlib.h> 4 using namespace std; 5 int random(); 6 int main() 7 { int i,j; 8 int a[10]; 9 int c; 10 srand((unsigned)time(NULL)); 11 for(i=0;i<10;i++) 12 a[i]=random(); 13 for(i=0;i<10;i++) 14 {for(j=i+1;j<10;j++) 15 if(a[i]>a[j]) 16 {c=a[i]; 17 a[i]=a[j]; 18 a[j]=c; 19 }} 20 for(i=0;i<10;i++) 21 cout<<a[i]<<" "; 22 return 0; 23 } 24 25 int random() 26 { 27 int num; 28 num = rand()%100; 29 //num2=num%100; 30 if(num<10&&num>0) 31 {num=num+11; 32 return num;} 33 else return num; 34 //return num2; 35 }
6、从键盘上输入一个字符串,假定字符串的长度小于80,试分别统计出每一种英文字母(大,小写等同看待)的个数并输出出来.
1 #include<iostream> 2 #include<string> 3 using namespace std; 4 int n=0; 5 int main() 6 { char a[80]; 7 char b[27]="abcdefghijklmnopqrstuvwxyz"; 8 int c[26]; 9 char *p1,*p2; 10 char *q[26]; 11 int i,k; 12 cin.getline(a,81); 13 p1=&a[0]; 14 p2=&a[0]; 15 while(*p1++!='\0') 16 {n++;} 17 for(i=0;i<26;i++) 18 c[i]=0; 19 for(i=0;i<26;i++ ) 20 q[i]=&b[i]; 21 for(i=0;i<n;i++,p2++) 22 {for(k=0;k<26;k++) 23 {if(*p2==*q[k]||(*p2+32)==*q[k]) 24 c[k]++;} 25 } 26 for(i=0;i<26;i++) 27 cout<<"the "<<b[i]<<" letter "<<c[i]<<endl; 28 29 return 0; 30 }
7、求出两个矩阵之积,其中a[3][4]与b[4][4]相乘。
1 #include<iostream> 2 using namespace std; 3 int main() 4 { int a[3][4]; 5 int b[4][4]; 6 int c[3][4]; 7 int i,j,k; 8 int *p,*q; 9 p=&a[0][0]; 10 q=&b[0][0]; 11 for(i=0;i<3;i++) 12 for(j=0;j<4;j++) 13 c[i][j]=0; 14 cout<<"请输你的数据1"<<endl; 15 for(i=0;i<3;i++) 16 for(j=0;j<4;j++) 17 scanf("%d",&a[i][j]); 18 cout<<"请输出你的数据2"<<endl; 19 for(i=0;i<4;i++) 20 for(j=0;j<4;j++) 21 scanf("%d",&b[i][j]); 22 for(i=0;i<3;i++) 23 {for(j=0;j<4;j++) 24 cout<<" "<<a[i][j]; 25 if(j=3) 26 cout<<endl; } 27 cout<<endl; 28 for(i=0;i<4;i++) 29 {for(j=0;j<4;j++) 30 cout<<" "<<b[i][j]; 31 if(j=3) 32 cout<<endl; } 33 cout<<endl; 34 for(i=0;i<3;i++) 35 { 36 for(j=0;j<4;j++) 37 { 38 for(k=0;k<4;k++) 39 c[i][j]=c[i][j]+(*(*(a+i)+k))*(*(*(b+k)+j)); 40 } 41 } 42 for(i=0;i<3;i++) 43 { 44 for(j=0;j<4;j++) 45 cout<<" "<<c[i][j]; 46 if(j=3) 47 cout<<endl; 48 } 49 return 0; 50 }
记得写这些代码时,是刚接触C语言不久之后,当时真是很头痛。现在看来,代码又烦,又长。不管咋样,这是走向编程的第一步。反正代码思维也简单,大家还是可以读懂
的。我就不注明解释了。初学者可以看看,做一下题,参考一下。其他大神就算了。
如果引用,请注明出处http://www.cnblogs.com/Su-30MKK/archive/2012/09/18/2689913.html