- 9.3
利用例题9.6程序中的函数Swap(),从键盘输入10个整数,用函数编程实现计算其最大值和最小值,并互换它们所在数组中的位置。
#include<stdio.h>
void Swap(int *x,int *y);
int main()
{
int a[10];
int i,j,max_,min_;
printf("调换前:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
{
for(j=i+1;j<10;j++)
{
if(a[i]<a[j]) max_=j;
if(a[i]>a[j]) min_=j;
}
}
Swap(&a[max_],&a[min_]);
printf("调换后:\n");
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}
void Swap(int *x,int *y)
{
int temp;
temp=*x;
*x=*y;
*y=temp;
}
- 10.4
输入一行字符,用函数编程统计其中有多少单词。假设单词之间以空格分开。
#include <stdio.h>
int main()
{
char string[81];
int i,num=0,word=0;
char c;
gets(string);
for(i=0;(c=string[i])!='\0';i++)
if(c==' ') word=0;
else if (word==0)
{
word=1;
num++;
}
printf("there are %d words in this line .\n",num);
return 0;
}
- 10.5
参考例10.5,分别用字符数组和字符指针作函数参数两种方法编程实现如下功能:在字符串中删除与某字符相同的字符。
数组
#include <stdio.h>
void addspace(char s[]){
int n;
n=0;
while(s[n]) n++;
s[n*2]='\0';
n--;
while(n>=0){
s[n*2]=s[n];
s[n*2+1]=32;
n--;
}
}
main(){
char s[255];
gets(s);
addspace(s);
puts(s);
}
- 10.6
分别用字符数组和字符指针作函数参数两种方法编程实现在字符串每个字符串插入一个空格的功能。
数组
#include <stdio.h>
void addspace(char s[]){
int n;
n=0;
while(s[n]) n++;
s[n*2]='\0';
n--;
while(n>=0){
s[n*2]=s[n];
s[n*2+1]=32;
n--;
}
}
main(){
char s[255];
gets(s);
addspace(s);
puts(s);
}
指针
#include <stdio.h>
void addspace(char *s){
int n;
n=0;
while(*(s+n)) n++;
*(s+n*2)='\0';
while(n>=0){
*(s+n*2)=*(s+n);
*(s+n*2-1)=32;
n--;
}
}
main(){
char s[255];
gets(s);
addspace(s);
puts(s);
}
- 10.7
字符串逆序存放
#include<stdio.h>
#include<string.h>
#define N 80
void Inverse(char str[]);
main()
{
char str[N];
printf("Input a string:\n");
gets(str);
Inverse(str);
printf("Inversed results:\n");
printf("%s\n",str);
}
void Inverse(char str[])
{
int a = strlen(str), i;
char temp;
for(i = 0;i < a/2; i++)
{
temp = str[i];
str[i] = str[a - 1 - i];
str[a - 1 - i] = temp;
}
}
- 10.8
参考例10.7,不用返回指针值的函数编程实现字符串连接函数strcat()功能。
#include <stdio.h>
int main(int argc, char const *argv[]) {
char a[2][3] = {"ABC", "DEF"};
char *p1 = &a[0][3], *p2 = a[1];
for (int i = 0; i < 3; i++) {
*p1++ = *p2++;
}
*p1 = '\0';
printf("%s\n",a[0]);
return 0;
}
- 10.9
输入五个国名,找出并输出按字典顺序排在最前面的国名。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(void)
{
char* str[5];
int i;
printf("Input five countries' names:\n");
for(i=0;i<5;i++)
{
str[i] = (char*)malloc(50);
scanf("%s",str[i]);
}
for(i=0;i<5;i++)
{
if(strcmp(str[0],str[i])>0)
{
str[0]=str[i];
}
}
printf("The minimum is:%s\n",str[0]);
for(i=0;i<5;i++)
{
free(str[i]);
}
return 0;
}