c第四次(2)上上机
- 格式:doc
- 大小:39.00 KB
- 文档页数:5
第四次上上机(二)
1. 将两个字符串连接起来,不用strcat函数
#include
void main( )
{char str1[20],str2[10];
int i=0,j=0;
printf("enter str1 and str2:");
scanf("%s%s",str1,str2); //两个字符串之间用空格分隔
while(str1[i] !='\0') i++; //找串str1中的串结束符'\0'
while(str2[j] !='\0')
str1[i++]=str2[j++]; //将串str2中的字符连接到串str1之后
str1[i]='\0'; //将串结束符放在str1之后
printf("str1 is:%s\n",str1);
}
2. 输入一行字符,统计其中字母、数字和其它字符的个数。
#include
#include
void main( )
{ int i,k,a[3]={0,0,0}; char str[40];
printf("请输入一个字符串:");
gets(str);
k=strlen(str);
for(i=0;i
{ if(str[i]>='a' && str[i]<='z' || str[i]>='A' && str[i]<='Z')
a[0]++; //是字母,则字母的个数加一
else if (str[i]>='0' && str[i]<='9')
a[1]++; //是数字,则数字的个数加一
else
a[2]++;//既不是字母,也不是数字,则其它字符的个数加一
}
printf("字母的个数:%d,数字的个数:%d,其它字符的个数:%d\n",
a[0],a[1],a[2]);
}
3. 将字符串中所有的小写字母转换为大写字母
#include
void mystrupr(char string[])
{
int i = 0;
while(string[i]!=0) {
if(string[i]>='a' && string[i]<='z')
string[i] = string[i]-'a'+'A';
i = i+1;
}
}
void main()
{
char str[] = "This is a sample.";
mystrupr(str);
printf("%s\n",str);
}
4. 求字符串的长度
#include
#include
int mystrlen(char string[])
{
int len = 0;
while(string[len]!='\0')
len = len+1;
return len;
}
void main()
{
char string[81];
int len = 0;
printf("输入一个字符串 : ");
gets(string);
printf(" The length of string :%d\n",mystrlen(string));
}
5. .第七章 数组课后作业
7.2采用选择法对10个整数按升序的顺序排序。
程序分析:设有10个数,将a[1]与 a[2] ~a[10]比较,若a[1]比a[2] ~a[10]都小,则不交换。
若a[2] ~a[10]中有一个以上比a[1]小,则将其中最小的一个与a[1]交换(假如a[i]与a[1]), 此时a[1]中存放了10个数中最小的。
第二轮将a[2] 与a[3] ~a[10]比较,将剩下的9个数中的最小者a[i]与a[2]对换,
此时a[2]中存放的是10个数中第二个小的数。
依次类推,共进行9轮比较,a[1] ~a[10]就已按从小到大的顺序存好了。
#include
void main()
{int i,j,min,temp,a[11];
for(i=1;i<=10;i++){printf("a[%d]=",i);
scanf("%d",&a[i]);}
for(i=1;i<=9;i++)
{min=i;
for(j=i+1;j<=10;j++)
if(a[min]>a[j]) min=j;
temp=a[i];
a[i]=a[min];
a[min]=temp;}
printf("the sorted numbers:\n");
for (i=1;i<=10;i++)
printf("%5d",a[i]);printf("\n");}
7.3求一个3×3的整型矩阵对角线元素之和
#include
void main()
{int a[3][3],sum=0;
int i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf(“%d”,&a[i][j]);
for(i=0;i<3;i++)
sum=sum+a[i][i];
printf(“sum=%6d\n”,sum);}
7.4 已有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中。
分析:
(1)假设a数组已排好序,如果插入的数num比a 数组最后一个数大。则将它放在a数组的尾部。
(2如果插入的数num不比a 数组最后一个大,则将它依次和a[0]到a[n-1]比较,直到出现a[i]>num,这时表示a[0]到a[i-1]之前的各元素比num 小,而a[i]到a[n-1] 的各元素比num 大。num理应插到a[i-1]之后,从a[i]到a[n-1]各元素向后移一个位置。a[i]变成a[i+1], ….a[n-1]变成a[n],然后将num放在a[i]中。
#include
void main()
{int a[11]={1,4,6,9,13,16,19,28,40,100};
int num,i,j;
for(i=0;i<10;i++)
printf("%5d",a[i]);
printf("\n"); printf("insert data:");
scanf("%d",&num);
if(num>a[9]) a[10]=num;
else {for(i=0;i<10;i++)
if(a[i]>num)
{for(j=9;j>=i;j--)
a[j+1]=a[j];
a[i]=num;break;
}
}
printf("now,array a:\n");
for(i=0;i<11;i++)
printf("%5d",a[i]);
printf("\n");}
7.14编写一个程序,将字符数组2中的字符串拷贝到字符数组1中。不用strcpy函数。
#include
#include
void main()
{char s1[80],s2[80];
int i;
printf(“input s2:”);
scanf(“%s”,s2);
for(i=0;i<=strlen(s2);i++)
s1[i]=s2[i];
printf(“s1:%s\n”,s1);)}
6. // Example 打印回文数
#include
int Ispalindrome(int n); //函数原型
void main()
{
int i;
for(i=1000;i<10000;i++)
{
if(Ispalindrome(i)) //调用函数Ispalindrome()
printf("%d\t",i);
}
printf("\n");
}
int Ispalindrome(int n)
{ int k,m=0;
k=n;
while(k)
{
m=m*10+k%10;
k=k/10;
}
return (m==n);
}
7. // Example :比较两个字符串
#include
int mystrcmp(char s1[],char s2[])
{
int i = 0;
while(s1[i]==s2[i] && s1[i]!=0 && s2[i]!=0)
i++;
return s1[i]-s2[i];
}
void main()
{
char s1[100]="Zhang3";
char s2[100]="Li4";
printf("The answer is \n");
if(mystrcmp(s1,s2)>0)
printf("%s>%s\n",s1,s2);
else if(mystrcmp(s1,s2)==0)
printf("%s=%s\n",s1,s2);
else
printf("%s<%s\n",s1,s2);
}