2.6 函数
问题 A: 习题7-5 字符串逆序存放
#include<stdio.h>
#include<string.h>
void change(char a[], char b[]){
int len, i;
len = strlen(a);
for(i=0; i < len; i++){
b[len-1-i] = a[i];
}
b[len] = '\0';
}
int main(){
char a[100],b[100];
scanf("%s",a);
change(a,b);
printf("%s",b);
return 0;
}
问题 B: 习题7-7 复制字符串中的元音字母
#include<stdio.h>
#include<string.h>
void select(char a[], char b[]){
int len, i, j=0;
len = strlen(a);
for(i=0; i < len; i++){
if(a[i]=='a'||a[i]=='e'||a[i]=='i'||a[i]=='o'||a[i]=='u')
b[j++] = a[i];
}
b[j] = '\0';
}
int main(){
char a[100],b[100];
scanf("%s",a);
select(a,b);
printf("%s",b);
return 0;
}
2.7 指针
问题 A: C语言10.1
#include<stdio.h>
void compare(int *a, int *b){
if(*a < *b){
int temp = *b;
*b = *a;
*a = temp;
}
}
int main(){
int a, b, *p, *q;
scanf("%d%d",&a,&b);
p = &a;
q = &b;
compare(p,q);
printf("%d %d\n",*p,*q);
return 0;
}
问题 B: C语言10.2
#include<stdio.h>
void compare(int *a, int *b,int *c){
if(*a < *b){
int temp = *b;
*b = *a;
*a = temp;
}
if(*a < *c){
int temp = *c;
*c = *a;
*c = temp;
}
if(*b < *c){
int temp = *c;
*c = *b;
*b = temp;
}
}
int main(){
int a, b, c, *p, *q, *m;
scanf("%d%d%d",&a,&b,&c);
p = &a;
q = &b;
m = &c;
compare(p,q,m);
printf("%d %d %d\n",*p,*q,*m);
return 0;
}
问题 C: C语言10.10
#include<stdio.h>
#include<string.h>
int main(){
char *a = "I love China!";
int n, i;
scanf("%d",&n);
for(i = n; i < strlen(a); i++)
printf("%c",*(a+i));
return 0;
}
问题 D: C语言10.15
#include<stdio.h>
#include<string.h>
void change(char *a,char *b){
char c[100];
strcpy(c,a);
strcpy(a,b);
strcpy(b,c);
}
int main(){
char a[100] , b[100], c[100];
scanf("%s%s%s",a,b,c);
if(strcmp(a,b)>0) change(a,b);
if(strcmp(a,c)>0) change(a,c);
if(strcmp(b,c)>0) change(c,b);
printf("%s\n%s\n%s\n",a,b,c);
return 0;
}
问题 E: C语言10.16
#include<stdio.h>
void input(int *a){
int i;
for(i = 0; i < 10; i++){
scanf("%d",(a+i));
}
}
void deal(int *a){
int i, m, n, max, min, t;
max = min = 0;
for(i = 1;i < 10; i++){
if(a[max] < a[i]) max = i;
if(a[min] > a[i]) min = i;
}
t = a[0];a[0] = a[min];a[min] = t;
t = a[9];a[9] = a[max];a[max] = t;
}
void output(int *a){
int i;
for(i = 0; i < 10; i++){
printf("%d ",*(a+i));
}
}
int main(){
int a[10];
input(a);
deal(a);
output(a);
return 0;
}