问题:输入一个字符串,用指针求出字符串的长度。
答案
#include <stdio.h>
int main()
{
  char str[20],  *p;
  int length=0;
  printf(“Please input a string: ”);
  gets(str);
  p=str;
  while(*p++)
  {
length++;
}
printf(“The length of string is %d\n”, length);
return 0;
}
问题:使用C语言实现字符串中子字符串的替换
描述:编写一个字符串替换函数,如函数名为 StrReplace(char* strSrc, char* strFind, char* strReplace)strSrc为原字符串,strFind是待替换的字符串,strReplace为替换字符串。
举个直观的例子吧,如:“ABCDEFGHIJKLMNOPQRSTUVWXYZ”这个字符串,把其中的“RST”替换为“ggg”这个字符串,结果就变成了:
ABCDEFGHIJKLMNOPQgggUVWXYZ
答案一:
#include <stdio.h>
#include <string.h>
void StrReplace(char* strSrc, char* strFind, char* strReplace);
#define M 100;
void main()
{char s[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char s1[]="RST";
char s2[]="ggg";
StrReplace(s,s1,s2);
printf("%s\n",s);
return 0;
}
void StrReplace(char* strSrc, char* strFind, char* strReplace)
{
        int i=0;
        int j;
        int n=strlen(strSrc);
        int k=strlen(strFind);
        for(i=0;i<n;i++)
        {
                if(*(strSrc+i)==*strFind)
                {
                        for(j=0;j<k;j++)
                        {
                                if(*(strSrc+i+j)==*(strFind+j))
                                {
                                        *(strSrc+i+j)=*(strReplace+j);
                                }
                                else continue;
                        }
                }
        }
}
问题:编写一个程序实现功能:将字符串”Computer Secience”赋给一个字符数组,然后从第一个字母开始间隔的输出该串,用指针完成。
答案:
#include <stdio.h>
#include <string.h>
int main()
{
    char str[]=”Computer Science”;
    int flag=1;
    char *p=str;
    while(*p)
{
  if ( flag )
  {
          printf(“%c”,*p);
      }
      flag = (flag + 1) % 2;
      p++;
    }
    printf(“\n”);
    return 0;
}
问题:编写一个程序实现功能:将两个字符串合并为一个字符串并且输出,用指针实现。
  char str1[20]={“Hello ”}, str2[20]={“World ”};
答案:
#include <stdio.h>
int main()
{
  char str1[20]={“Hello ”}, str2[20]={“World ”};
  char *p=str1, *q=str2;
  while( *p ) p++;
  while( *q )
  {
      *p = *q;
      p++;
      q++;
    }
    *p = ‘\0’;
    printf(“%s\n”, str1);
    return 0;
}
问题:以下函数的功能是用递归的方法计算xn阶勒让德多项式的值。已有调用语句pnx);编写函数实现功能。递归公式如下:
答案:
#include <stdio.h>
float p(int x,int n)
{
    float t,t1,t2;
    if(n= =0) return 1;
    else if(n= =1) return x;
    else
    {
什么是编程举个例子        t1=(2*n-1)*x*p(x,(n-1));
        t2=(n-1)*p(x,(n-2));
        t=(t1-t2)/n;
        return t;
}
}
int main()
{
    int x,n;
    printf(“input two int (x and n):”);
    scanf(“%d%d”,&x,&n);
    printf(“%.2f\n”,p(x,n));
    return 0;
}
问题:给主函数传递参数实现echo功能:
答案:
#incldue <stdio.h>
int main(int argc,char *argv[])
{  int i=1;
    while( i < argc )
    {printf(“%s ”argv[i]);
        i++;
}
printf(“\n”);
return 0;
}
1.数组比较20分)
问题描述: 比较两个数组,要求从数组最后一个元素开始逐个元素向前比较,如果2个数组长度不等,则只比较较短长度数组个数元素。请编程实现上述比较,并返回比较中发现的不相等元素的个数比如:
数组{1,3,5}和数组{77,21,1,3,5}按题述要求比较,不相等元素个数为0
数组{1,3,5}和数组{77,21,1,3,5,7}按题述要求比较,不相等元素个数为3
要求实现函数: int array_compare(int len1, int array1[], int len2, int array2[])
【输入】 int len1:输入被比较数组1的元素个数;
int array1[]:输入被比较数组1
int len2:输入被比较数组2的元素个数;
int array2[]:输入被比较数组2
【输出】  
【返回】 不相等元素的个数,类型为int
示例 
1 输入:int array1[] = {1,3,5}int len1 = 3int array2[] = {77,21,1,3,5}int len2 = 5
函数返回:3
2 输入:int array1[] = {1,3,5}int len1 = 3int array2[] = {77,21,1,3,5,7}int len2 = 6
函数返回:0
答案:
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
int array_compare(int len1, int array1[], int len2, int array2[])
{
    int count=0;
    for( ;len1>=0&&len2>=0 ;len1--,len2--)
    {
            if(array1[len1-1]==array2[len2-1])
            {
                count++;
            }   
    }
    return count;
}
int main()
{
    int result=0;
    int array1[]={1,3,5};
    int len1=3;
    int array2[]={77,12,1,3,5};
    int len2=5;
    result=array_compare( len1, array1,  len2, array2);
    printf("the result is %d", result);
}
约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。
答案:
#include<stdio.h>
#include<stdlib.h>
typedef struct Node
{   
    int num;
    struct Node *next;
}LinkList;
LinkList *creat(int n)
{
    LinkList *p,*q,*head;
    int i=1; 
    p=(LinkList *)malloc(sizeof(LinkList));
    p->num=i;
    head=p;
    for(i=2;i<=n;i++)
    {
        q=(LinkList *)malloc(sizeof(LinkList)); /*Malloc()向系统申请分配指定size个字节的内存空间。返回类型是 void* 类型。void* 表示未确定类型的指针。C,C++规定,void* 类型可以强制转换为任何其它类型的指针。*/
        q->num=i;
        p->next=q;
        p=q;   
    }
    p->next=head;          /*使链表尾指向链表头 形成循环链表*/

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。