1.有下列代码,求最终s值
int s=0,k;
for(k=7;k>=0;k--){
printf("for循环进入k值为%d\n",k);
switch(k){
case 1:printf("k为%d,此时s为%d\n",k ,s);
case 4:printf("k为%d,此时s为%d\n",k ,s );
case 7:s++;printf("k为%d,此时s为%d\n",k ,s );break;
case 2:printf("k为%d,此时s为%d\n",k ,s );
case 3:printf("k为%d,此时s为%d\n",k ,s );
case 6:printf("k为%d,此时s为%d\n",k ,s );break;
case 0:printf("k为%d,此时s为%d\n",k ,s );
case 5:s+=2;printf("k为%d,此时s为%d\n",k ,s );
break;
}
}
2.输入一段英文,计算其中有多少单词,每个单词用空格隔开
char str[255];
char a;
int num;
gets(str);
for (int i = 0; (a=str[i])!='\0' ; i++)
{
if(a==' '){
num++;
}
//计算有哪些单词
}
num++;
printf("word amount %d\n",num);
3.在内存中存储一个字符 ‘a’ 占用 1 个字节,而存储字符串"abcde"则占用 6 个字节
//char字节长度1,字符串字节长度要算上末尾的\0
4.
char a,b;
int c,d;
scanf("%c%d%d%c",&a,&c,&d,&b);
printf("%c,%d,%d,%c",a,c,d,b );
5.printf数值格式控制
int x=38;
double y=8.57;
printf("%1d\n",x);//38
printf("%2d\n",x);//38
printf("%3d\n",x);// 38
printf("%3.2f\n",y);//8.57
printf("%3.1f\n",y);//8.6
printf("%3.0f\n",y);// 9
printf("%2.2f\n",y);//8.57
printf("%3.3f\n",y);//8.570
printf("%4.2f\n",y);//8.57
printf("%-4.2f\n",y);//8.57
d格式:用来输出十进制整数。有以下几种用法: %d:按整型数据的实际长度输出。
%md:m为指定的输出字段的宽度。如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。 %ld:输出长整型数据。
f格式:用来输出实数(包括单、双精度),以小数形式输出。有以下几种用法: %f:不指定宽度,整数部分全部输出并输出6位小数。
%m.nf:输出共占m列,其中有n位小数,如数值宽度小于m左端补空格。
%-m.nf:输出共占n列,其中有n位小数,如数值宽度小于m右端补空格。
其中,小数点也占一位
6.比较两数组大小
char aa[]={'1','2','3'};
char bb[]={"123"};
printf("%d\n",sizeof(aa) );//3
printf("%d\n",sizeof(bb) );//4
char aa[3]={'1','2','3'};
char bb[3]={"123"};
printf("%d\n",sizeof(aa) );//3
printf("%d\n",sizeof(bb) );//3
7.#define的带参计算
#include
#define P 2
#define power(x) P*x*x
int main(){
int x=1,y=2;
printf("%d\n%d\n",power(x+y),power(y+x) );
//输出6,7
return 0;
}
8.去除字符串中的指定字符
#include
int main(){
char s[]="**abc*d****";
char a='a';
int x,y;
//外层遍历字符串
for(x=y=0;s[x]!='\0';x++){
//内层重新赋值字符串
if(s[x]!=a){
s[y]=s[x];
y++;
}
}
//添上结束标识符
s[y]='\0';
printf("%s\n", s);
//输出**bc*d****
return 0;
}
9.( * b)++与*b++
#include
int main(){
int a=1,*b=&a;
printf("%d\n",*b );//1
printf("%d\n",b);//6422036
printf("%d\n",*b++ );//1
printf("%d\n",*b );//6422040
printf("%d\n",b);//6422040
return 0;
}
#include
int main(){
int a=1,*b=&a;
printf("%d\n",*b );//1
printf("%d\n",b);//6422036
printf("%d\n",(*b)++ );//1
printf("%d\n",*b );//2
printf("%d\n",b);//6422036
return 0;
}
10.二级指针
#include
int main(){
int a=1;
int *b=&a;
int **c;
*c=b;
printf("%d\n", *b);//1
printf("%d\n", *c);//b的地址
printf("%d\n", **c);//1
return 0;
}
11.求数字长度
//随机输入一个数字,得出其长度
//常用于编程题,例如回文数
#include
int main()
{
int a;
scanf("%d",&a);
int b=10,c=1;
for (int i=0; ; i++)
{
if (a/b != 0)
{
b*=10;
c++;//计算位数
}
else
{
break;
}
}
printf("变量a位数为:%d\n", c);
return 0;
}
12.逗号表达式与逗号运算符
#include
int main()
{
int a;
printf("%d\n",a=(a+1,a+2,a+5) );//5
a=3,a++,a+1;
printf("%d\n",a );//4
printf("%d\n",(a=3,a++,a+1) );
//5,a赋值为3,中间a++,按a+1输出
return 0;
}
13.数组升序排列(冒泡排序,降序同理)
#include
int main()
{
int a[10]={1,2,3,1,2,31,1,4,9,11};
for (int i = 0; i < 10; i++)
{
int b;
for (int j = 1; j < 10; j++)
{
if (a[j-1]>a[j])
{
b=a[j];
a[j]=a[j-1];
a[j-1]=b;
}
}
}
for (int i = 0; i < 10; ++i)
{
printf("%d\n",a[i] );
}
return 0;
}
14.同上,使用指针方法实现数组排序
#include
int main()
{
void change(int *a);
int a[10]={1,2,3,4,5,6,7,8,9,0};
int i;
change(a);
for (i = 0; i < 10; ++i)
{
printf("%d\n",a[i] );
}
return 0;
}
void change(int *a){
int x;//中间值
for (int i = 0; i < 10; ++i)
{
for (int j = 1; j < 10; ++j)
{
if (*(a+j-1)<*(a+j))
{
x=*(a+j-1);
*(a+j-1)=*(a+j);
*(a+j)=x;
}
}
}
}
15.使用指针方法打印二维数组
#include
#include
int main()
{
void average(int (*a)[4]);
int a[3][4]={55,43,65,0,35,65,91,0,54,64,23,0};
//传参数组指针指向二维数组只写列数
average(a);
//数组指针=&a;而非=a;两者地址相同类型不同
return 0;
}
void average(int (*a)[4]){
for (int i = 0; i < 3; ++i)
{
for (int j = 0; j < 4; ++j)
{
printf("%d\n",(*(a+i))[j] );
//优先级*小于[],错误写法*(a+i)[j]
//等价printf("%d\n",*(*(a+i)+j) );
}
}
}
16.打印乘法口诀表
#include
int main()
{
//乘法口诀表
int i,j;
for (int i = 1; i < 10; ++i)
{
for (int j = 1; j <=i ; ++j)
{
printf("%d*%d=%d ",j,i,i*j );
}
printf("\n");
}
return 0;
}
17.判断回文数
#include
#include
int main()
{
int num,a=0,b;
scanf("%d",&num);
//思路:反向赋值给另一个数,对比来判断是否一致
b=num;//b替num给a赋值
while(b>0){
a=a*10+b%10;//a最高位存b最低位,a*10
b/=10;//略去最低位,十位变个位,b/10
}
if (a==num)
{
printf("为回文数");
}
else{
printf("不为回文数");
}
return 0;
}
18.
#include
int a,b;
void fun(){
a=100;
b=200;
}
int main()
{
int a=1,b=2;
fun();
printf("%d\n",a+b );//输出3
return 0;
}
19.C语言对嵌套if语句的规定是: else总是与【D】配对
:
20.求素数
#include
int main(){
int a=1;
for(int i=100;i<=200;i++){
a=1;
for(int j=2;j<i;j++){
if(i%j!=0) ;
else a=0;
}
if(a){
printf("%d\n",i );
}
}
return 0;
}
21.求数组最大值索引
#include
int main(){
int x[3][3]={11,22,33,44,55,44,33,22,11};
int a=0,b=0;
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
if(x[i][j]<x[i][j+1]){
a=i;
b=j+1;
}
}
}
printf("%d,%d",a,b);
return 0;
}
22.
#include
int main(){
struct Data{
char a[5];
int b;
float c;
double d;
}num;
printf("%d\n",sizeof(num));
return 0;
}
23.
#include
int main(){
union{
char a[2];
int b;
}num;
num.b=0x4321;//0100 0011 0010 0001
printf("%x,%x",num.a[0],num.a[1]);
//输出21,43
return 0;
}
24.
#include
int main(){
int a[5]={1,2,3,4,5};
int *str=(a+1);
printf("%d\n", *(str-1));//1
str=(int *)(&a+1);
printf("%d\n%d", *(a+1),*(str-1));//2,5
return 0;
}
25.
#include
void fun(int *a,int *b,int *c){
int *t;
t=a;a=b;b=t;
*t=*b;*b=*c;*c=*t;
printf("%d %d %d",*a,*b,*c);//733
}
int main(){
int a=5,b=7,c=3;
int *p1=&a,*p2=&b,*p3=&c;
fun(p1,p2,p3);
printf(" %d %d %d",a,b,c);//373
}
26.strlen
int main(){
char str1[]={'1','2','3'};
printf("%d\n", strlen(str1));
char str2[]="123";
printf("%d\n", strlen(str2));
char str3[3]={'1','2','3'};
printf("%d\n", strlen(str3));
char str4[3]="123";
printf("%d\n", strlen(str4));
printf("%d\n",strlen("abcd") );
printf("%d\n",strlen("\t\"\xff\065\n") );
printf("%d\n",strlen("\141\\141abc\t") );
printf("%d\n",strlen("hello\0\t\'\\") );
return 0;
}
27.
int a,b,c;
a=b=c=1;
++a || ++b && ++c;
printf("%d%d%d\n",a,b,c );//211短路现象
28.最大公约数与最小公倍数(两数)
#include
//最小公倍数
int minint(int a,int b){
int i =a*b;
return i;
}
//最大公约数
int maxint(int a,int b){
int i;
for(i=1;i<a ;i++){
if((i%a==0)&&(i%b==0)){
break;
}
}
return i;
}
int main(){
//最大公约数,最小公倍数
int a,b,maxx,miny,sizez;
scanf("%d,%d",&a,&b);
int minint(int a,int b);
int maxint(int a,int b);
//最小公倍数
if(a>b){
miny=minint(a,b);
maxx=maxint(b,a);
}
else{
miny=minint(b,a);
maxx=maxint(a,b);
}
printf("最小公倍数为:%d\n",miny);
printf("最大公约数为:%d",maxx);
}
29.
int a,b;
printf("%d",',');//键值44
scanf("%d%d",&a,&b);//输入1,2
printf("%d%d\n",a,b );
30.
#include
int main(){
char a='\xfa',b='\123';
printf("%c\n%d\n", a,a);
printf("%c\n%d", b,b);
return 0;
}
31.
#include
#include
int main(){
void fun(char *s);
char *s;
fun(s);
puts(s);//空
return 0;
}
void fun(char *s){
char t[10]="12";
s=t;
strcpy(t,"example");
}
32.删除数组指定字符
#include
int main(){
int a[10]={1,2,3,4,5,6,7,8,9,0},b[10],c;
void fun(int a[10],int b[10],int c);
scanf("%d",&c);
fun(a,b,c);
a[9]='\0';
for (int i = 0; i < 9; ++i)
{
a[i]=b[i];
printf("%d\n",a[i] );
}
return 0;
}
void fun(int x[10],int y[10],int z){
int i,j;
for (i = 0, j = 0; i < 10; ++i)
{
if (x[i]==z)
{
continue;
}
y[j++]=x[i];
}
}
33.
数组在内存中占一片(连续)的存储区,由(数组名)代表它的首地址
数组名是一个(地址)常量,不能对它进行赋值运算
34.指针数组与二维指针
#include
int main(){
int a[]={5,4,3,2,1};
int *p[]={a+3,a+2,a+1,a};
int **q=p;
printf("%d\n",*(p[0]+1) );
printf("%d\n",**(q+2));
}
35.指针复杂使用
#include
int main(){
int a[12]={0,1,2,3,4,5,6,7,8,9,10,11},*p[3],**pp,i;
for (int i = 0; i < 3; ++i)
{
p[i]=&a[i*2];
}
pp=p;
printf("%d\n",pp[0][11] );//11
printf("%d\n",*(*(p+2) + 2));//6
printf("%d\n",*( (p[0]+1) + 2));//3
printf("%d\n",p[0]+1 + 2);//地址
printf("%d\n",p[3][1]);//无
}
36.用递归方法求阶乘
#include
int main(){
int fun(int x);
int a;
scanf("%d",&a);
printf("%d\n", fun(a+1));
return 0;
}
int fun(int x){
static int z = 1;
x--;
if (x!=0)
{
z*=x;
fun(x);
}
return z;
}
37.变量作用域
int main(){
int fun(int n);
int s=0,i=0;
for (; i < 2; ++i)
{
s+=fun(i);
}
printf("%d\n",s );
return 0;
}
int fun(int n){
int t=0,a=5;
if (n/2){
int a=6;
t += a++;
}
else{
int a=7;
t += a++;
}
return t +a++;
}
38.打印菱形四边形
#include
int main(){
int i,j,k,z;
for (i = 0 , z = 1 ; i < 4; i++ , z++)
{
for (j = 3 ; j > i ; j--)
{
printf(" " );
}
for (k = 0 ; k < i+z ; k++ )
{
printf("*");
}
printf("\n");
}
for (i = 3 , z = 2; i > 0 ; i-- , z--)
{
for (j = 4; j > i ; j--)
{
printf(" ");
}
for (k = 0; k < i+z; k++)
{
printf("*");
}
printf("\n");
}
return 0;
}
39. 表达式 !(x>0 || y>0) 等价于
40.
union myun{
struct
{
int x,y,z;
} u;
int k;
}a;
int main(){
a.u.x=4;
a.u.y=5;
a.u.z=6;
a.k=0;
printf("%3d\n",a.k );
return 0;
}
本篇全部为我手打且运行过,专升本成功,目前在准备考研,这篇文章应该不会再更新,专升本考试内容基本都差不多,希望对你有所帮助
灵魂与肉体至少总要有一个在前行,加油