紧急求助!!初学者问题
二级c教材我已经看过一遍了,看的时候都可以理解,但是前天我买了一份预测卷做,才考40分!!现在才发现原来还有许多东西没掌握,我晕啊~~4月3日就考试了,
请大家帮帮我~~~~
=======================================================================
(1)
比如 int *p,a[5],b; 要使指针p指向a[5]或b,我看过有n种方法,不知哪个是正确的?
1 *p=&a[5]; 7 *p=&b;
2 *p=a[5]; 8 *p=b;
3 *p=a; 9 p=&b;
4 p=&a[5]; 10 p=b;
5 p=a[5];
6 p=a;
=======================================================================
(2)
main()
{
int c1=2,c2=0;
while(!c2--) 请问 !c2-- 怎么判断是真是假?没有表达式
{printf("%d%d",c1--,c2);}}
还有这个
while(1) while(m) 它们都没有表达式,怎么判断?
====================================================================== (3)
#include<stdio.h>
#include<string.h>
main()
{
char ss[10]="1,2,3,4,5";
get(ss); strcat(ss,"6789"); printf("%s\n",ss);
如果输入ABC的话 答案是ABC6789。我有一点不明白就是在执行get(ss)之后,ss[10]
中数据都被删除了吗?我一直觉得是ABC45。
======================================================================
(4)
题目: 设 a=5,b=6,c=7,d=8,m=2,n=2,执行(m=a>b)&&(n=c>b)后n得值为:答案 是1。 我不明白的是书
上不是写当第一项表达式为0时,整个逻辑表达式为假,然后将跳过第二项,那为什么n不等于2?
=========================================================================
(5)
操作不合法的是
int x[6],*p; p=&x[0];
int x[6],*p;*p=x;
int x[6],*p;p=x;
int x[5],p;p=x[0];
什么叫做操作不合法?里面似乎全没错????
=======================================================================
(6)
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;
能不能帮我分析一下a,b,c有什么错误???
====================================
(7)
main()
{
int a[4][3],*p[4],j;
for(j=0;j<4;j++) p[j]=a[j];
为什么a[4][3]和a[1]不能表示数组元素呢?
=====================================
(8)
sub(char *a,char b) { char c;c=*a;*a=b;b=c;}请问这个涵数代表什么意思?
sub(char *a,char *b) {char c; c=*a;*a=*b;*b=c;} 这个呢?
====================================
(9)
{
char *s="12134211"; intv[4]={0,0,0,0},k,i;
for(k=0;s[k];k++)
{switch(s[k])
{case'1':i=0;
case'2':i=1;
case'3':i=2;
case'4':i=3;}
v[i]++;} v[i]++???数组不是不能整体操作么?
for(k=0;k<4;k++) printf("%d",v[k]);}
能告诉我这个程序如何执行的吗?我看不懂
====================================
(10)
{
union{ int i{2]; long k; char c[4];}r, *s=&r;
s->i[0]=0x39;
i->i[1]=0x38;
printf("%c\n",s->c[0]);}
请问结果为什么是9,是怎么执行的?
=====================================
(11)
int a[3][3]={{1,2},{3,4},{5,6}},j,j,s=0;
for(i=1;i<3;i++)
for(j=0;j<=i;j++) s+=a[i][j];
printf("%d\n",s);
a得存储模式是这样吗?1 2 0
3 4 0
5 6 0
答案怎么是18呢? 好像只是3和6啊?加起来也是18啊?
===================================
万分感谢!!!!!!!!!!!!!!!