`

C语言二级

    博客分类:
  • C
c 
阅读更多
#include<iostream> 
using namespace std;
class Student{
public:
	int num; 
	char* name; 
	float score; 
	Student(int num,char* name,float score):num(num),name(name),score(score){}
	void display()
	{
		cout<<"num:"<<num<<"name:"<<name<<"score:"<<score<<endl; //private:
	}
	
}; 

class Graduate:public Student{ 
public: 
	Graduate(int num,char* name,float score,float pay):Student(num, name, score), pay(pay){} //特别注意
	void display()
	{
		cout<<"num:"<<num<<"name:"<<name<<"score:"<<score<<"score:"<<score<<endl;
	}
private: 
	float pay; 
}; 

int main() 
{
	Student stud1(1001,"Li",87.5); 
	Graduate grad1(2001,"Wang",98.5,563.5); 
	Student *pt=&stud1; 
	pt->display(); 
	grad1.display(); 
	return 0; 
} 

 

#include  <stdio.h>
int main()
{
    int a[]={1,2,3 ,4},y,*p=&a[3];
    --p;
    y=*p;
    printf("y=%d\n",y);
}


#include  <stdio.h>
void fun(char *s)
{ while(*s)
{ if(*s%2) printf("%c",*s);
s++;
}
}
main()
{
    char a[]="BYTE";
fun(a);
printf("\n");
}


#include  <stdio.h>
int main()
{
    int a[5]={1,2,3,4,5}, b[5]={0,2,1,3,0},i,s=0;
for(i=0;i<5;i++)
    s=s+a[b[i]];
printf("%d\n",s);
return 0;
}


#include<stdio.h>
#include<string.h>
int main(){
 char x[]="STRING";
 x[0]=0;
 x[1]='\0';
 x[2]='0';
 printf("%d %d\n",sizeof(x),strlen(x));
return 0;
}


#include<stdio.h>
#include <string.h>
int main()
{
char *s1="AbDeG";
char *s2="AbdEg";
s1+=2;
s2+=2;
printf("%d\n",strcmp(s1,s2));
return 0;
}


#include<stdio.h>
#include<stdlib.h>
int main()
{
    int *a, *b, *c;
    a = b = c = (int*)malloc(sizeof(int));
    *a = 1;
    *b = 2;
    *c = 3;
    a = b;
    printf("%d,%d,%d\n",*a, *b,*c);
}


#include<stdio.h>
#include<stdlib.h>
int main()
{
int arr[]={6,7,8,9,10};
int *ptr;
ptr=arr;
*(ptr+2)+=2;
printf ("%d,%d\n",*ptr,*(ptr+2));
}


#include<stdio.h>//异常
#include<string.h>
#include<stdlib.h>
int main()
{
char a;
char *str=&a;
strcpy(str,"hello");
printf(str);
return 0;
}


#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
   char *s="abcde";
s+=2;
printf("%d",s);
}



#include<stdio.h>
#include<string.h>
#include<stdlib.h>

 void print_value(int *x)
{ printf("%d\n",++*x);}

int main()
{
int a=25;
print_value(&a);;
}




C++问题: 已有定义“int a=10,*p1,*p2;p1=p2=&a;",下面语句中正确的是:
A.a=*p1+*p2;
B.p2=a;
C.*p2=&a;
D.&a=p2;


A正确,
p1=p2=&a;p1、p2是指针,指向a的地址。
所以*p1=*p2=a=10.
B:p2是指向a的地址,a是整形。
C:*p2是a的值为10,&a是a的地址。

D:&a地址常量,不可赋值


#include<stdio.h>
#include<string.h>
#include<stdlib.h>

 int main()
 {
     int a=1, b=3, c=5;
     int *p1=&a, *p2=&b, *p=&c;
     *p =*p1*(*p2);
printf("%d\n",c);
return 0;
}


#include<stdio.h>
#include<string.h>
#include<stdlib.h>

void sum(int *a)
{ a[0]=a[1];}

int main( )
{ int aa[10]={1,2,3,4,5,6,7,8,9,10},i;
for(i=2;i>=0;i--)
    sum(&aa[i]);
printf("%d\n",aa[0]);
return 0;
}


#include<stdio.h>
#include<string.h>
#include<stdlib.h>

void fun(char *a,char *b)
{
while(*a=='*')a++;
while(*b=*a){b++;a++;}
}
int main()
{
char *s="*****a*b****",t[80];
fun(s,t);puts(t);                           return 0;
}


#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main()  {
int m=1,n=2,*p=&m,*q=&n,*r;
r=p;p=q;q=r;
printf("%d,%d,%d,%d\n",m,n,*p,*q);
return 0;
}


#include<stdio.h>
#include<string.h>
#include<stdlib.h>

#define N 8
void fun(int *x,int i)
{*x=*(x+i);}
int main()
{ int a[N]={1, 2, 3, 4, 5, 6, 7, 8},i;
fun(a,2);
for(i=0; i<N/2; i++)
{ printf("%d",a[i]);}
printf("\n");
return 0;
}


#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int fun(int n)
{ int *p;
p=(int *)malloc(sizeof(int));
*p=n; return *p;
}
int main()
{ int a;
a = fun(10);
printf("%d\n", a+fun(10));
return 0;
}

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main()
{int a[]={1,2,3,4},y,*p=&a[3];
--p; y=*p; printf("y=%d\n",y);
return 0;
}


#include<stdio.h>
#include<string.h>
#include<stdlib.h>

void fun(char *c,int d) {
*c=*c+1;
d=d+1;
printf("%c,%c,",*c,d);
}
int main()
{
char a='A',b='a';
fun(&b,a);
printf("%c,%c\n",a,b);                   return 0;
}


#include<stdio.h>
#include<string.h>
#include<stdlib.h>


int main()  {                               int x[] = {10, 20, 30};                     int *px = x;
printf("%d,", ++*px);             printf("%d,", *px);
px = x;                           printf("%d,", (*px)++);          printf("%d,", *px);                         px = x;                           printf("%d,", *px++);
printf("%d,", *px);
px = x;
printf("%d,", *++px);
printf("%d\n", *px);
return 0; }


continue语句的作用是:使程序的执行流程跳出包含它的所有循环,这句话对吗?
break 是跳出当前循环,即循环结束(如果是嵌套循环,注意一点就是break只结束自己的循环,外循环不受影响);
continue 是跳出本次循环,即continue下面的代码不执行了,直接进入下一次的循环。


以下叙述中正确的是( )
A)break 语句只能用于switch 语句体中
B)continue 语句的作用是:使程序的执行流程跳出包含它的所有循环
C)break 语句只能用在循环体内和switch 语句体内
D)在循环体内使用break 语句和continue 语句的作用相同
为什么选C?


a for语句也可以用
b 只跳出离的最近的一个循环
d 作用不同,break是跳出循环体,不再执行循环体,执行循环体后的语句,而continue只是结束一次循环直接进入下一次循环


#include<stdio.h>
#include<string.h>
#include<stdlib.h>


int main()  {
int x=23;
do{ printf("%d", x--); } while(!x);
}


#include<stdio.h>
#include<string.h>
#include<stdlib.h>


main()
{ int a,b;
  for (a=1,b=1;a<=100;a++)
 { if (b>=20) break;
   if (b%3==1)   {b+=3; continue; }
    b-=5;
  }
  printf("%d",a);
}


#include<stdio.h>
#include<string.h>
#include<stdlib.h>


int fun(int x,int y)
{static int m=0,i=2;
 i+=m+1;
 m=i+x+y;
return m;
}
int main()
{ int j=1,m=1,k;
  k=fun(j,m);
  printf("%d",k);
  k=fun(j,m);
  printf("%d",k);
  return 0;
}


#include<stdio.h>
#include<string.h>
#include<stdlib.h>


int a,b;
void fun()
{a=100;b=200;}
int main()
{ int a=5,b=7;
  fun();
  printf("%d,%d",a,b);
  return 0;}


#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int f()
{static int i=0;
 int s =1;
 s+=i;i++;
 return s;
}
int main()
{ int i,a=0;
for (i=0;i<5;i++)
    a+=f();
printf("%d\n",a);
return 0;
}


#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int f(int a)
{ int b=0;
  static int c=3;
  a=c++,b++;
  return(a);
}
int main()
{ int a =2,i,k;
  for(i=0;i<2;i++)
    k=f(a++);
  printf("%d",k);
  return 0;
}


#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int fun3(int x)
{static int a =3;
a+=x;
return (a);}
int main()
{int k=2,m=1,n;
n=fun3(k);   n=fun3(m);
printf("%d\n",n);
return 0;}


#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int m=13;
int fun2(int x,int y)
{int m=3;
return(x*y-m);}
int main()
{int a=7,b=5;
printf("%d\n",fun2(a,b)/m);
return 0;}


#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int MyFunction(int);
int main()
{ int entry=12345;
printf("%5d",MyFunction(entry));
return 0;}
int MyFunction(int Par)
{ int result;
result=0;
do{
result=result*10+Par%10;
Par/=10;}while(Par);
return result;}


#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int x =3;
void incre()
{ static int x=1;
  x*=x+1;
  printf("%d",x);}
int main()
{int i;
for(i=1;i<x;i++)
incre();
return 0;}


#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void f(int v,int w)
{ int t;
  t=v;v=w;w=t;}
int main()
{ int x=1,y=3,z=2;
  if(x>y) f(x,y);
  else if(y>z)   f(y,z);
  else f(x,z);
  printf("%d,%d,%d",x,y,z);
  return 0;}


#include<stdio.h>
#include<string.h>
#include<stdlib.h>

void fun2(char a,char b)
{printf("%c%c",a,b);}

char a = 'A', b = 'B';
void fun1()
{a='C';b='D';}

int main()
{fun1();
 printf("%c%c",a,b);
 fun2('E','F');
 return 0;}


#include<stdio.h>
#include<string.h>
#include<stdlib.h>


int main()
{char s[]="rstuv",*p;
p=s;
  printf("%c\n", *p+2);
  return 0;}


有两个字符数组 a、b,则以下正确的输入语句是 A.scanf(“%s%s”,&a,&b);B.gets(a); gets(b);
C语言中:%s格式控制串表示输入字符(String),在C语言中字符串是按一个个字符分别存放到数组的每个元素当中。-
A选项错误的原因是出现两个%s字符串输入。
B是正确的,gets()函数是string.h头文件定义的字符串输入函数。

C语言 字符串”STOP ”与”STOP”相等的表述为什么是错
前一个字符串末尾有一个空格,后一个则没有,所以不相等。


#include<stdio.h>
#include<string.h>
#include<stdlib.h>


int main()
{
    printf("%d\n", strlen("school"));
  }


#include<stdio.h>
#include<string.h>
#include<stdlib.h>


int main()
{
    char a[7]="abcdef";
    char b[4]="ABC";
    strcpy(a, b);
    printf("%c", a[5]);
  }


#include<stdio.h>
#include<string.h>
#include<stdlib.h>


int main()
{
char x[5]={'a','b','\0','c','\0'};   printf("%s",x);
  }


#include<stdio.h>
#include<string.h>
#include<stdlib.h>


int main()
{
int a[3] = {1};
  }


#include<string.h>
#include<stdlib.h>

void f (int *p);
int main()
{
int a[5] = {1, 2, 3, 4, 5}, *r = a;
f(r);
printf("%d\n",*r);
return 0;
}
void f(int *p)
{
    p = p + 3;
    printf("%d", *p);
}


#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main()
{
char ch;int k;
ch='a';k=12;
printf("%c,%d",ch,ch,k);
printf("k=%d",k);
}


#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main()
{
int a=1,b=2,c=3,d=4,m=2,n=2;
(m=a>b)&&(n=c>d);
printf("%d",n);
}


#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main()
{
int x=3,y=4,z=5;
int  r = (!(x+y)+z-1&&y+z/2);
printf("%d",r);
}


#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main()
{
int k=7,x=12;
printf("%d\n",(x%=(k%=5)));
printf("%d\n",(x%=(k-k%5)));
printf("%d\n",(x%=k-k%5));
printf("%d\n",((x%=k)-(k%=5)));
}



#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main()
{ int k=11;
  printf("k=%d,k=%o,k=%x",k,k,k);
  return 0;}


#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main()
{ char s[ ]="\n123";
int n = sizeof(s);
printf("%d",n);
}


#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main()
{ int i=5,d[i];
}


24、判断字符串s1是否大于字符串s2,应当使用()。
A)
if(s1>s2)  B)if(strcmp(s1,s2))  C)if(strcmp(s1,s2)>0)    D)
if(strcmp(s2,s1)>0)
strcmp函数:该函数进行字符串之间的比较,在比较的时候,区分大小写. 
  声明: strcmp(string str1,string str2)   

  该函数对传入的两个字符串参数进行比较,如果两个字符串完全相同,则返回0;如果按照字典顺序str1在str2后面,则返回一个正数;如果str1小于str2,则返回一个负数.
应选择C
if(strcmp(s1,s2)>0) printf(″s1大于s2″);



#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main()
{
    char c1 = 'A';
    char c2 = 'D';
    printf("%d %d",c1, c2 - 2);
}


下列关于单目运算符++、--的叙述中正确的是
A.它们的运算对象可以是任何变量和常量
B.它们的运算对象可以是char型变量和int型变量,但不能是float型变量
C.它们的运算对象可以是int型变量,但不能是double型变量和float型变量
D.它们的运算对象可以是char型变量、int型变量和float型变量
正确答案:D
解析:“++”和“--”运算符都是单目运算符,其运算对象可以是整型变量,也可以是实型变量,但不能是常量或表达式。当运算对象是字符型时,系统自动将其转换成该字符所对应的ASCII码值。


#include<stdio.h>
#include<string.h>
#include<stdlib.h>

void fun(int a,int b,int c)
{a=456;b=567;c=678;}
int main()
{
    int x=10,y=20,z=30;
    fun(x,y,z);
printf("%d,%d,%d\n",x,y,z);
return 0;}



#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int x1=30,x2=40;
void sub(int x,int y)
{x1=x;x=y;y=x1;}
int main()
{int x3=10,x4=20;
sub(x3,x4);
sub(x2,x1);
printf("%d,%d,%d,%d\n",x3,x4,x1,x2);
return 0;}

c语言中形参可以是变量,常量,表达式?
应该是实参吧
-------------
c语言中 实参 可以是变量,常量,表达式。 

其实,变量和常量也是属于表达式的范畴的。


1)实参可以是任意类型的数据。
2)形参可以是变量,或缺省常量,不可以是表达式。
如果是缺省常量,只能定义在参数列表的后面。比如 int func(int a,int b=0)是正确的。
int func(int a=0,int b)是错误的。


.以下错误的描述是(  )。							
A. 不同的函数中可以使用相同的变量名
B. 形式参数是局部变量
C. 一个函数内部定义的变量只能在本函数范围内有效   
D. 在一个函数内部的复合语句中定义的变量可以在本函数范围内有效
D
复合语句中定义的变量的生命周期,只在该复合语句的控制范围内有效,超过这个范围就没有了
简单的说,就是一对大括号中间定义的变量,在这对大括号外部就无效了。


设有定义 double x[10],*p=x;以下能给数组x下标为6的元素,读入数据的正确语句是 C 为什么,求详解错哪儿
A  scanf ("%f",&x[6]);    B    scanf ("%lf",*(x+6));
C  scanf ("%lf",p+6);  D   scanf ("%lfp6);
a项中数组元素的类型是double不能用%f
b项中 x+6是指针但是*(x+6)不是地址
d项表示方法不正确


设有如下程序段 char s[20]= “Bejing”,*p; p=s; 则执行p=s;语句后,以下叙述正确的是 ()   A)可以用*p表示s[0] B)s数组中元素的个数和p所指字符串长度相等 C)s和p都是指针变量 D)数组s中的内容和指针变量p中的内容相等
选A吧
B、p指向一个字符 长度不等
C、s是常量
D、p指向一个字符 内容不同

27)下列定义数组的语句中,正确的是
 A) int N=10; B) #define N 10 int x[N]; int x[N]; C) int x[0..10]; D) int x[ ]; 
B难道不应该换行写吗
A不是数组,只是定义了一个变量N。
B就是定义数组的。这又不是编程题。
C数组后面错了,应为x[10]或者x[]={0,1,2,……}
D没给数组赋范围。应该为x[10]

下面程序的功能是将字符串s中所有的字符c删除。
#include<iostream>
using namespace std;
main()
{ char s[80];
int i,j;
cin>>s;
for  (i=j=0; s[i]!=’\0’;  i++)
if  (s[i] !=’c’)	 {s[j]=s[i];【  j++    】; }
s[j]=’\0’;
cin>>s;
   }

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics