C++/C基础大杂烩

     这是以前做过一些关于C++与C的一些基础性题目。现在拿出来,与大家共勉。

  1. 一个指针类型的对象占用内存的____4__个字节的存储空间.
  2. 一个指针类型指向一个数据对象,它保存着该数据对象的_起始地址__,若数据对象为DataType类型,则该指针的类型为__DataType*________.
  3. 若要把一个整形指针P转换为字符指针,则采用的强制转换表达式为__(char*)p_____.
  4. 假定一个数据对象为int *类型,则采用的强制转换表达式为________.
  5. 假定P是一个指向整数对象的指针,则用_ *p___表示该整数对象,用____&p_____表示指针变量P的地址.
  6. 假定P是一个指针,则*P++运算首先访问_____*p____,然后使__&p_____的值增1.
  7. 假定P是一个指针,则(*P)++运算首先访问_____*p______,然后使___*p______的值增1.
  8. 假定P所指对象的值为25,P+1所指对象的值为42,则*P++的值为__25_____.
  9. 假定P所指对象的值为25,P+1所指对象的指为42,则*++P的值为___42____.
  10. 假定P所指对象的值为25,P+1所指对象的值为42,则执行(*P)++运算后,P所指对象的值为__26_____.
  11. 假定P所指对象的值为25,P+1所指对象的值为42,则执行*(P++)或*P++运算后,P所指对象的值为__25_____.
  12. 假定A是一个一维数组,则A[i]的指针访问方式为_*(A+i)_______.
  13. 一个数组的数组名实际上是指向该数组___0_______元素的指针,并且在任何时候都不允许_改变______它.
  14. 若要定义整形指针P并初始指向X,则所使用的定义语句为____int *p=X___________.
  15. 若P指向X,则___*p___与X的表示是等价的.
  16. 在一个二维数组int a[m][n]中,包含的一维元素a[i]的类型为__int______,访问a[i]时返回值的类型为_int______.
  17. 假定a是一个二维数组,则a[i][j]的指针访问方式为__*(*(a+i)+j)__________.
  18. 若y是x的引用,则&y和&x的值_相同_____,即为变量__x____的地址.
  19. 招待int *p=new int[10]操作,使p指向动态分配的数组中下标为__[0]______的元素,该元素可表示为__p_____或____p[0]_____.
  20. 执行char *p=new char(‘a’)操作后,p所指向的数据对象的值为__65_______.
  21. 执行__ delete p[] _____操作将释放由P所指向的动态分配的数据空间.
  22. 执行___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

 

 

 

 

 

 

转载于:https://www.cnblogs.com/Su-30MKK/archive/2012/09/18/2689913.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值