2023-12-24 17:39来源:m.sf1369.com作者:宇宇
#include<stdio.h>
void main()
{
int a[4][4];
int i,j;
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
scanf(%d,&a[i][j]);
}
}
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
int temp;
temp=a[i][j];
a[i][j]=a[j][i];
a[j][i]=temp;
}
}
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
printf(%d,a[i][j]);
}
printf(\n);
}
}
第一,加空格;比如这个输出:cout<<t.hour<<:<<t.min<<:<<t.sec<<endl;
如果是在写一些大的程序出现拼写错误时,很难找出拼写错误,应写成这样的格式:
cout << t.hour << : << t.min << : << t.sec << endl;
第二,在写“CLASS”或是“STRUCT”的时候,注意空行;
第三,“CLASSES”写在头文件里,与“CLASS”相对的定义或是“FUNCTION”写在另一个.cpp的文件里,文件名取和“CLASS”头文件一样的名,最后就是把测试文件单放在一个文件里,这样的话,再大的程序也能方便管理。
这只是一种默认的书写规范,且用eclispe等编程工具选中要规范化的代码,按ctrl+shift+f就是自动加空格的。
关于不加分号的说法是错误的:
int a = 1
int b = 2;
// 这样编译是不会通过的至于变量名和类名是否用中文,当然是可以的。
总的来说,这些规范只是用来使代码看起来更整齐美观,当然每个人审美观也不一样,或者说性格使然自己不想这么麻烦;但我觉得养成良好的编码习惯对于你日后的工作场合很有必要性。
#include <stdio.h>
#include <windows.h>
#include <string.h>
#include <stdlib.h>
#define MAX 1000
void main1()
{
int a, *p;
p = &a;
printf(please input a number:);
scanf(%d, p); // 对p指向的a地址输入值
printf(a=%d\n*p=%d\n, a, *p); // 输出a地址存的值 输出p指向的地址a的内容
}
void main2()
{
int a,*p;
p = &a;
printf(please input a number:);
scanf(%d, &a); // 对p指向的a地址输入值
printf(p=%p *p=%d\n, p,*p);// 输出p指向的a的首地址号不足的位数用00补齐 输出p指向的地址a的内容
printf(%4d%4d %x\n, (*p)++, ++(*p), p);//输出现在p指向的地址,输出p指向的地址内的值加一后的值,输出p指向的地址内的值加一后的值再加一
printf(%4d%4d\n, *p++, *p);// 输出上个程序加一后的p指向的地址的内容
printf(p=%x\n, p);// 输出现在p指向的地址号
}
void sub(int x, int y, int *z)
{
*z = y - x;
}
void main3()
{
int a, b, c;
sub(10, 5, &a);// 把10和5分别富值给x,y 把a的地址传个*z在sub中对z指向的a地址富值
sub(7, a, &b);// 把7和a的值分别富值给x,y 把b的地址传个*z在sub中对z指向的b地址富值
sub(a, b, &c);// 把a的值和吧的值分别富值给x,y 把c的地址传个*z在sub中对z指向的c地址富值
printf(a=%d\nb=%d\nc=%d\n, a, b, c);// 输出被赋值后的a b c
}
void main4()
{
int a[] = {1, 2, 3, 4, 5};
int *p = NULL;
p = a;// p指向a的首地址
printf(%d , *p);// 输出p指向的a首地址的第一个元素的内容
printf(%d , *(++p));// p的指向后移动指向a的第二个元素并输出她的内容
printf(%d , *++p);// p的指向后移动指向a的第二个元素并输出她的内容
printf(%d , *(p--));// p输出值后指向的位子向前移一个元素
printf(%d , *p++);// 输出p的值后再将p的指向向后移一个元素
printf(%d , *p);// 输出p移后的指向的地址的值
printf(%d , ++(*p));// 对p指向的地址的值加一后输出值
printf(%d\n , *p);// 输出现在p指向的地址的值
}
f(int *t)
{
*t =10;
}
void main5()
{
int *p, a;
a = 2;
p = &a;// p指向a的地址
f(p);// 把p指向的a的地址传给*t在子函数中对a进行重新赋值;
printf(a=%d\n, a);// 输出a重新赋的值
}
void main6()
{
int a[10], j, *p;
for (j = 0; j < 10; j++)
a[j] = j+1; // 对数组a进行赋值
printf(\nOutput array using a[j]:\n);
for (j = 0; j < 10; j++)
printf(%d , a[j]);// 输出赋值后的a
p = a; // p指向数组a首地址
printf(\nOutput array using p[j]:\n);
for (j = 0; j < 10; j++)
printf(%d , p[j]); // 把指针p当数组用输出p指向的a的各个元素
printf(\nOutput array using*( p+j):\n);
for (j = 0; j < 10; j++)
printf(%d , *(p+j)); // 把指针p当数组用输出p指向的a的各个元素
printf(\nOutput array using*( a+j):\n);
for (j = 0; j < 10; j++)
printf(%d , *(a+j)); // 使用数组a的指针性质
printf(\nOutput array using *p++:\n);
for (j = 0; j < 10; j++)
printf(%d , *p++); // 把指针p当数组用输出p指向的a的各个元素
printf(\n);
}
void Input(float *p,int n)
{
int i;
printf(Pleese input %d score: ,n);
for(i=0;i<n;i++)
{
scanf(%f,(p+i));
}
}
void Output(float *q,int n)
{
int i;
printf(Output the score:\n);
for(i=0;i<n;i++)
{
printf(%f\n,*(q+i));
}
}
void FMax(float score[], int n,float *maxs,int *maxn )
{
int i;
*maxs=score[0];
for(i=1;i<n;i++)
{
if(score[i]>*maxs)
{
*maxs=score[i];
*maxn=i;
}
}
}
void FMin(float score[], int n,float *mins,int *minn )
{
int i;
*mins=score[0];
for(i=1;i<n;i++)
{
if(score[i]<*mins)
{
*mins=score[i];
*minn=i;
}
}
}
void main7()
{
float score[MAX],maxs,mins;
int maxn,minn;
Input(score,10);
Output(score,10);
FMax(score,10,&maxs,&maxn);
FMin(score,10,&mins,&minn);
printf(maxscore=%.2f,\t\tmaxnum=%d\nminscore=%.2f,\t\tminnum=%d\n,maxs,maxn,mins,minn);
}
int aver(int (*p)[5],int q)
{
int j,m=0,b;
for(j=0;j<5;j++)
{
m+=*(*(p+q-1)+j);
}
b=m/5;
return(b);
}
void main8()
{
int i,j,(*pscore)[5],a,n,q[10][5];
pscore=q;
printf(Please input ten students's five scores:\n);
for(i=0;i<10;i++)
{
for(j=0;j<5;j++)
{
scanf(%d,&pscore[i*5+j]);
}
}
printf(Please input students's number:);
scanf(%d,&n);
a=aver(pscore,n);
printf(第%d学生五门成绩的平均值为:%d\n,n,a);
}
void main9()
{
char *str1,*str2,*str3,a[100],b[100],c[100];
str1=&a[0];
str2=&b[0];
str3=&c[0];
printf(str1=);
gets(str1);
printf(str2=);
gets(str2);
strcat(str1,str2);// 把字符串str2接到字符串str1的后面
printf(str1=%s\n,str1);// 输出连接后的字符串str1
strcpy(str3,str1);// 把字符串str1接到字符串str3的后面
printf(str3=%s\n,str3);// 输出连接后的字符串str3
}
void main10( )
{
char *p = abcdefghijklmnopq;
while( *p++!='e')// 指针p的指向地址向后移一个元素判断是不是等于'e'
printf(%c\n, *p);// 如果判断等于'e'就输出p指向的地址内的字符
}
void main11()
{
char b[] = program;
char *a = PROGRAM;
int i = 0;
printf(%c%s\n, *a,b+1);// 先对数组b加一后输出b 再输出*a
while (putchar(*(a+i)))
{
i++;
}
printf(i = %d\n, i);// 判断a有多少个字符输出
while (--i)
{
putchar(*(b + i)); // 将p字符串逆向输出不输出最后一个
}
printf(\n%s\n, &b[3]);// 输出b字符串的最后四位
}
void main12( )
{
int a=1, *p, **pp;
pp =&p;
p =&a;
a++;
printf (%d,%d,%d\n,a,*p, **pp);// a是a加一后的值 *P是指向的a地址内的值 **pp是指向的 *P是指向的a地址内的值
}
void main13()
{
char *alpha[7]={ ABCD,EFGH ,IJKL ,MNOP ,QRST ,UVWX ,YZ };
char **p;
int i;
p = alpha;
for(i = 0;i < 4;i++)
printf(%c, *(p[i]));// 输出指向的前四个字符串的第一个字母
printf(\n);
}
void main14()
{
char n[100];
char *s [ ]={Zero, One, Two, Three, Four, Five, Six, Seven, Eight, Ten};
int i,x,len;
printf(输入一串阿拉伯数字:\n);
gets(n);
len=strlen(n);// 计算输入的n的长度
for(i=0;i<len;i++)
{
x=*(n+i)-48; /* 48为字符0的ASCII码 */
printf(%s ,s[x]);// 将输入的数字当地址号
}
printf(\n);
}
unsigned int MyStrlen(char s[ ])
{
char *p = s;
while (*p !='\0' )
{
p++;
}
return(p-s );
}
void main15()
{
char a[1000];
int b;
printf(Input char number:);
gets(a);
b= MyStrlen(a);
printf(The number's len:%d\n,b);
}
void reading(char (*a)[5], int *num)
{
int i=0;
gets(a[i]);
while(!strcmp(a[i],****)==0)
{
gets(a[i]);
}
*num=i;
}
void findmax(char (*a)[5], int *num,char **max)
{
int i;
for (*max=a[0],i=1;i<*num;i++)
{
if(strcmp(a[i],*max)>0)
*max=a[i];
}
}
void main16()
{
char ss[10][5],*ps;
int n;
reading(ss,&n);
findmax(ss,&n,&ps);
printf(max=%s\n,ps);
}
int *search1(int(*s)[4],int *len,int *n)
{
int i,j;
for (i = *n; i<*len; i++)
{
for (j=0; j<4; j++)
{
if (*(*(s+i)+j) < 60)
{
*n=i;
return s[i];//如有不及格的返回地址
}
}
}
return NULL;//如果没有返回NULL,好打出没有成绩不及格的同学
}
int *search2(int(*s)[4],int *len,int *n)
{
int i,j;
for (i = *n; i<*len; i++)
{
for (j=0; j<4; j++)
{
if (*(*(s+i)+j) < 90)
{
*n=i;
return s[i];//如有不及格的返回地址
}
}
}
return NULL;//如果没有返回NULL,好打出没有成绩不及格的同学
}
void main17()
{
int i,j,n,score[1000][4],count=0,x;
int *p;
p=&score[0][0];
printf(Pleese input the students's total number(小于1000):\n );
scanf(%d,&n);
printf(Pleese input every student's score:\n );
for(i=0;i<n;i++)
{
for(j=0;j<4;j++)
{
scanf(%d,&p[i*4+j]);
}
}
printf(是100分制请输入100,150分制请输入150:);
scanf(%d,&x);
switch(x)
{
case 100:
i=0;//从第一个开始擦找
while (i<n+1)
{
p=search1(score,&n, &i);
if (p)//如果有
{
printf(不及格的是第 %d 个人,三科成绩分别为:\n,i+1);
for (j = 0; j < 4; j++)
{
printf(%d, , *p++);
}
count++;//记录有几个不及格的
printf(\n);
}
i++;
}
if (!p&&count==0)//如果没有
{
printf(没有成绩不及格的同学\n);
}
break;
case 150:
i=0;//从第一个开始擦找
while (i<n+1)
{
p=search2(score,&n, &i);
if (p)//如果有
{
printf(不及格的是第 %d 个人,三科成绩分别为:\n,i+1);
for (j = 0; j < 4; j++)
{
printf(%d, , *p++);
}
count++;//记录有几个不及格的
printf(\n);
}
i++;
}
if (!p&&count==0)//如果没有
{
printf(没有成绩不及格的同学\n);
}
break;
default:
printf(Incorrect letter entered .);
}
}
#define MAXI 16
#define N 5
void sort(char (*s)[MAXI],int n)
{
int i , j;
char *temp =(char *)malloc(sizeof(char ) * MAXI) ;
for(i = 0; i < n-1 ; i++)
{
for(j = i+1; j < n ; j++)
{
if(strcmp(s[i] , s[j]) > 0) //这里的排序不能用s[i] = s[j],错误:incompatible types in assignment
{
strcpy(temp,s[i]);
strcpy(s[i],s[j]);
strcpy(s[j],temp);
}
}
}
free(temp);
}
void print(char (*s)[MAXI],int n)
{
int i;
for(i = 0; i < n ; i++)
{
printf(%s\n,s[i]);
}
}
void main18()
{
int index;
char str[N][MAXI];
for(index = 0; index < N ;index++)
{
printf(请输入第%d个字符串:\n,index+1);
gets(str[index] );
}
sort(str,N);
print(str,N);
}
void main19()
{
printf(\t\t\t\t欢迎使用);
printf(\n);
printf(\t\t*************************************************);
printf(\n\t\t*\t\t\t\t\t\t*);
printf(\n\t\t*\t\t\t\t\t\t*);
printf(\n\t\t*\t\t输入1.第①个实验\t\t*);
printf(\n\t\t*\t\t输入2.第②个实验\t\t*);
printf(\n\t\t*\t\t输入3.第③个实验\t\t*);
printf(\n\t\t*\t\t输入4.第④个实验\t\t*);
printf(\n\t\t*\t\t输入5.第⑤个实验\t\t*);
printf(\n\t\t*\t\t输入6.第⑥个实验\t\t*);
printf(\n\t\t*\t\t输入7.第⑦个实验\t\t*);
printf(\n\t\t*\t\t输入8.第⑧个实验\t\t*);
printf(\n\t\t*\t\t输入9.第⑨个实验\t\t*);
printf(\n\t\t*\t\t输入10.第⑩个实验\t\t*);
printf(\n\t\t*\t\t输入11.第⑾个实验\t\t*);
printf(\n\t\t*\t\t输入12.第⑿个实验\t\t*);
printf(\n\t\t*\t\t输入13.第⒀个实验\t\t*);
printf(\n\t\t*\t\t输入14.第⒁个实验\t\t*);
printf(\n\t\t*\t\t输入15.第⒂个实验\t\t*);
printf(\n\t\t*\t\t输入16.第⒃个实验\t\t*);
printf(\n\t\t*\t\t输入17.第⒄个实验\t\t*);
printf(\n\t\t*\t\t输入18.第⒅个实验\t\t*);
printf(\n\t\t*\t\t输入0.结束\t\t\t*);
printf(\n\t\t*************************************************\n);
}
void main()
{
int n,m;
do{
system(cls);
main19();
printf(请输入所需要选择运行的程序的序号:);
scanf(%d,&n);
switch(n)
{
case 1:
main1();
break;
case 2:
main2();break;
case 3:
main3();break;
case 4:
main4();break;
case 5:
main5();break;
case 6:
main6();break;
case 7:
main7();break;
case 8:
main8();break;
case 9:
main9();break;
case 10:
main10();break;
case 11:
main11();break;
case 12:
main12();break;
case 13:
main13();break;
case 14:
main14();break;
case 15:
main15();break;
case 16:
main16();break;
case 17:
main17();break;
case 18:
main18();break;
default:
printf(选错了!!!!!!!\n);
}
printf(不想继续就输入0否则输入任意数字:);
scanf(%d,&m);
}while(m!=0);
}