问题:输入一个字符串,用指针求出字符串的长度。
答案:
#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;
}
问题:以下函数的功能是用递归的方法计算x的n阶勒让德多项式的值。已有调用语句p(n,x);编写函数实现功能。递归公式如下:
答案:
#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 = 3,int array2[] = {77,21,1,3,5},int len2 = 5
函数返回:3
2) 输入:int array1[] = {1,3,5},int len1 = 3,int 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小时内删除。
发表评论