C代码与方法
1 //-----------------------------1 2 #include<stdio.h> 3 void main() 4 { 5 char str1[30]="Very Good!",str2[30]; 6 char *p1,*p2; 7 p1=str1; 8 p2=str2; 9 printf("复制前str1数组存放的串为:%s\n",str1); 10 while (*p1!='\0') 11 { 12 *p2=*p1; 13 p1++; 14 p2++; 15 16 } 17 *p2='\0';//此行不可去 18 printf("复制后str2数组存放的串为:%s\n",str2); 19 } 20 //------------------------------------------2 21 #include<stdio.h> 22 void main() 23 { 24 int i,a[6]; 25 int *p[6]; 26 printf("input array a[6]:\n"); 27 for(i=0;i<6;i++) 28 { 29 scanf("%d",&a[i]); 30 p[i]=&a[i]; 31 } 32 printf("地址\t值\n"); 33 for(i=0;i<6;i++) 34 { 35 printf("%x ",p[i]);//%x以16进制位输出 36 printf("%d\n",*p[i]); 37 } 38 } 39 //---------------------------------3 40 #include<string.h> 41 #include<stdio.h> 42 void main() 43 { 44 char *course[4]={"English","Mathematics","Data structure","Internet"}; 45 char *temp; 46 int i,j; 47 printf("before sort:\n"); 48 for(i=0;i<4;i++) 49 puts(course[i]); 50 for(i=0;i<4;i++)//冒泡排序 51 for(j=i+1;j<4;j++) 52 { 53 if(strcmp(course[i],course[j])>0) 54 { 55 temp=course[i]; 56 course[i]=course[j]; 57 course[j]=temp; 58 } 59 } 60 printf("\nsfter sort:\n"); 61 for(i=0;i<4;i++) 62 puts(course[i]); 63 } 64 //--------------------------4 65 #include<stdio.h> 66 void main() 67 { 68 void swap(int *i,int *j); 69 int a,b; 70 printf("input a,b:\n"); 71 scanf("%d%d",&a,&b); 72 printf("交换前:\n"); 73 printf("a=%d,b=%d",a,b); 74 swap(&a,&b); 75 printf("交换后:\n"); 76 printf("a=%d,b=%d\n",a,b); 77 } 78 void swap(int *i,int *j) 79 { 80 int temp; 81 temp=*i; 82 *i=*j; 83 *j=temp; 84 } 85 //----------------------------5 86 #include<stdio.h> 87 void main() 88 { 89 char *str_cat(char *s1,char *s2); 90 char str1[30],str2[10]; 91 printf("input str1(目标串),str2:\n"); 92 gets(str1); 93 gets(str2); 94 printf("str1:\n"); 95 puts(str_cat(str1,str2)); 96 } 97 char *str_cat(char *s1,char *s2)//* 属于 char,指向函数的指针,给该函数一个地址 98 { 99 char *p1=s1,*p2=s2; 100 while (*p1!='\0') 101 p1++; 102 while(*p2!='0') 103 *p1++=*p2++; 104 *p1='\0'; 105 return s1; 106 } 107 //-------------------------------------6 108 #include<stdio.h> 109 void main() 110 { 111 int max(int x,int y); 112 int (*p)(int,int);//定义函数指针 113 int a,b,c; 114 p=max;//给p赋初值,将函数max的入口地址赋给指针变量p,是p指向max函数 115 printf("input a,b:\n"); 116 scanf("%d%d",&a,&b); 117 c=(*p)(a,b);//调用*p就是调用max,该语句与c=max(a,b);等价 118 printf("a=%d,b=%d,max=%d\n",a,b,c); 119 } 120 int max(int x,int y) 121 { 122 return(x>y?x:y); 123 } 124 //-------------------------------7 125 #include<stdio.h> 126 #define N 5 127 struct student 128 { 129 int num;//学号 130 char name[20];//姓名 131 float score[3];//三门课的成绩 132 }; 133 void average(struct student stu[N])//定义求平均值函数 134 { 135 int i,j; 136 float aver[N];//存放每个学生三门课的平均值 137 for(i=0;i<N;i++) 138 { 139 aver[i]=0; 140 for(j=0;j<3;j++) 141 aver[i]=aver[i]+stu[i].score[j];//求总分 142 aver[i]=aver[i]/3;//求每个学生的平均值 143 } 144 printf("output information:\n");//输出每个学生的信息 145 for(i=0;i<N;i++) 146 { 147 printf("num=%d,name=%s,",stu[i].num,stu[i].name);//与下面的输出成一行输出 148 for(j=0;j<3;j++) 149 printf("score=%f,",stu[i].score[j]); 150 printf("average=%f",aver[i]); 151 printf("\n"); 152 } 153 } 154 void main() 155 { 156 struct student stu[N];//定义结构体数组stu,每个元素都是内部变量,仅在main函数内有效 157 158 int i,j; 159 printf("input information:\n"); 160 printf("学号,姓名,三门课的成绩:\n"); 161 for(i=0;i<N;i++) 162 { 163 scanf("%d%s",&stu[i].num,&stu[i].name); 164 for(j=0;j<3;j++) 165 scanf("%f",&stu[i].score[j]); 166 } 167 average(stu);//调用average函数,实参为结构体数组名,此为地址传递 168 } 169 //------------------------8 170 #include<stdio.h> 171 void main() 172 { 173 int max(int x,int y); 174 int (*p)(int,int);//定义函数指针 175 int a,b,c; 176 p=max;//给p赋初值,将函数max的入口地址赋给指针变量p,是p指向max函数 177 printf("input a,b:\n"); 178 scanf("%d%d",&a,&b); 179 c=(*p)(a,b);//调用*p就是调用max,该语句与c=max(a,b);等价 180 printf("a=%d,b=%d,max=%d\n",a,b,c); 181 } 182 int max(int x,int y) 183 { 184 return(x>y?x:y); 185 } 186 //-------------------------------9 187 #include<stdio.h> 188 #define N 5 189 struct student 190 { 191 int num;//学号 192 char name[20];//姓名 193 float score[4];//三门课的成绩与平均分,score[3]存放平均分 194 }; 195 struct student stu[N]; 196 void input() 197 { 198 int i,j; 199 printf("input information:\n"); 200 printf("学号,姓名,三门课的成绩:\n"); 201 for(i=0;i<N;i++) 202 { 203 scanf("%d%s",&stu[i].num,stu[i].name); 204 for(j=0;j<3;j++) 205 scanf("%f",&stu[i].score[j]); 206 } 207 } 208 void average() 209 { 210 int i,j; 211 for(i=0;i<N;i++) 212 { 213 stu[i].score[3]=0; 214 for(j=0;j<3;j++) 215 stu[i].score[3]=stu[i].score[3]+stu[i].score[j]; 216 stu[i].score[3]=stu[i].score[3]; 217 } 218 } 219 void output() 220 { 221 int i,j; 222 printf("output information:\n"); 223 for(i=0;i<N;i++) 224 { 225 printf("num=%d,name=%s,",stu[i].num,stu[i].name); 226 for(j=0;j<3;j++) 227 printf("score=%f",stu[i].score[j]); 228 printf(",average=%f",stu[i].score[3]); 229 printf("\n"); 230 } 231 } 232 void main() 233 { 234 input(); 235 average(); 236 output(); 237 } 238 //---------------------10 239 #include<stdio.h> 240 #define N 4 241 struct student 242 { 243 int num; 244 char name[20]; 245 int score; 246 }s[N],t; 247 void main() 248 { 249 int i,j; 250 printf("学号,姓名,成绩:\n"); 251 for(i=0;i<N;i++) 252 scanf("%d%s%d",&s[i].num,s[i].name,&s[i].score); 253 254 for(i=1;i<N;i++) 255 for(j=0;j<N-i;j++) 256 if(s[j].score>s[j+1].score)//一个分数之差,换了一整套的方法 257 { 258 t=s[j]; 259 s[j]=s[j+1]; 260 s[j=1]=t; 261 } 262 printf("按成绩排序输出:\n"); 263 for(i=0;i<N;i++) 264 printf("%d %s %d\n",s[i].num,s[i].name,s[i].score); 265 }