第八章报告,指针8.2

实验三、指针与字符串

一、调试实例

#include<stdio.h>
#include<string.h>
int main(void)
{
    int i;
    char str[80],min[80];
    printf("Input 5 strings:\n");
    scanf("%s",str);
    strcpy(min,str);           //将‘min=str;’改为调用‘strcpy(min,str);’
    for(i=1; i<5; i++)
    {
        scanf("%s",str);
        if(strcmp(min,str)>0)
            strcpy(min,str);   //将‘min=str;’改为调用‘strcpy(min,str);
    }
    printf("Min is :%s\n",min);
    return 0;
}

二、基础编程题

(1).
#include<stdio.h>
#include<string.h>
int main()
{
    char a[55],la[55];
    for(int i=0; i<5; i++)
    {
        scanf("%s",a);
        if(strlen(a)>strlen(la))
            strcpy(la,a);
    }
    printf("%s\n",la);
    return 0;
} 
(2).
#include<stdio.h>
#include<string.h>
int main()
{
    char str[80],ser;
    gets(str);
    scanf("%c",&ser);
    int i,j;
    for(i=j=0; str[i]!='\0'; i++)
    {
        if(str[i]!=ser)
            str[j++]=str[i];
    }
    str[j]='\0';
    puts(str);
    return 0;
}
(3).
#include <stdio.h>
void strmcpy(char *s,char *t,int m)
{
    for(t+=m-1; *t; *s++=*t++);
    *s='\0';
}
int main()
{
    int m;
    char s[50],t[50];
    gets(t);
    scanf("%d",&m);
    strmcpy(s,t,m);
    printf("%s",s);
    return 0;
}
(4).
#include <stdio.h>
int main()
{
char a[100];
int i=0,j=0;
gets(a);
while(a[i]!='\0')
i++;
i--;
for(;j<=i;i--,j++)
{
if(a[i]!=a[j])
break;
}
if(j<=i)
printf("NO\n");
else
printf("YES\n");
}
(5)
#include <stdio.h>
#include <string.h>
int main()
{
  char sen[256];
  int ben=0,men=0,spa=0,num=0,oth=0;
  int i;
  gets(sen);
  for(i=0;i<(int)strlen(sen);i++)
  {
    if(sen[i]>='A'&&sen[i]<='Z')
    {
      ben++;
    }
    else if(sen[i]>='a'&&sen[i]<='z')
    {
      men++;
    }
    else if(sen[i]>=' ')
    {
      spa++;
    }
    else if(sen[i]>='0'&&sen[i]<='9')
    {
      num++;
    }
    else
    {
      oth++;
    }
  }
  printf("uppercase: %d\nlowercase: %d\nbreak: %d\ndigit: %d\nother: %d\n",ben,men,spa,num,oth);
  return 0;
}

三、改错

#include<stdio.h>
void strc(char *s,char *t);//改成*s,*t
int main()
{
    char s[80],t[80];
    gets(s);
    gets(t);
    strc(s,t);
    puts(t);
    return 0;
}
void strc(char *s,char *t)//改成*s,*t
{
    while(*t!='\0')
        t++;
    while(*t=*s)
    {
         t++;//s数组第一个字符给t数组原来的"\0"位置,然后进行指针位置向后移继续复制。
         s++;
    }
}
//共有五个错误,指针函数定义错误

四、扩展编程题

(1)
#include<stdio.h>
#include<string.h>
int main()
{
    char b[100],a[5][100];
    int i,j;
    for(i=0; i<5; i++)
        scanf("%s",a[i]);
    for(i=0; i<5; i++)
    {
        for(j=i+1; j<5; j++)
        {
            if(strcmp(a[i],a[j])>0)
            {
                strcpy(b,a[j]);
                strcpy(a[j],a[i]);
                strcpy(a[i],b);
            }
        }
    }
    for(i=0; i<5; i++)
        puts(a[i]);
    return 0;
}
(2)
#include<stdio.h>
#define MAXN 10000
void f( long int x, char *p );
int main()
{
    long int x;
    char s[MAXN]="";
    scanf("%ld",&x);
    f(x,s);
    printf("%s\n",s);
    return 0;
}
void f(long x,char * s)
{
    if (x < 0)
        s[0] = '-';
    int i,j,c;
    for(i=(x<0?0:-1); x>0; i)
    {
        s[++i]=x%16;
        x/=16;
    }
    for(j=i; j>=0; j--)
        if(s[j]<10)
            s[j]+=48;
        else
            s[j]+=55;
    s[i+1]='\0';
    for(j=0; j<i; j++,i--)
    {
        c=s[j];
        s[j]=s[i];
        s[i]=c;
    }
}
(3)
#include<stdio.h>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
typedef double de;
typedef char ar;
int main()
{
    ar a[10000];
    while(cin>>a)
    {

        for(ll j=7; j<32; j=j+8)
        {
            ll sum=0,x=1;
            for(ll i=j; i>=j-7; i--)
            {
                if(a[i]=='1')
                    sum=sum+x;
                x=2*x;
            }
            if(j<24)
                cout<<sum<<'.';
            else
                cout<<sum<<endl;
        }
    }
}



猜你喜欢

转载自blog.csdn.net/qq_40721948/article/details/80012276
今日推荐