(1)
#include "stdio.h"
int main(int argv,char *argc[]){
int n,i,k;
printf("Input n(n must be a natural number less than 10000)): ");
if(scanf("%d",&n)!=1 || n<1 || n>9999){
printf("%d is out of range of valid values.\n",n);
return 0;
}
k=0;
for(i=1;i<=n;i++)
k=(k+3)%i;
printf("Last No. is: %d\n",k%n+1);
return 0;
}
运行样例:
(2)
#include "stdio.h"
char *delchar(char *s,char c){
int i,j;
for(j=i=0;s[j]=s[i];i++)
if(s[j]!=c)
j++;
return s;
}
int main(int argv,char *argc[]){
char s[300],c;
printf("Input a string: ");
fgets(s,300,stdin);
printf("Input a char: ");
c=getchar();
fflush(stdin);
printf("After deleted,the string is: %s\n",delchar(s,c));
return 0;
}
运行样例:
(3)
#include "stdio.h"
char *strmcpy(char *s,char *t,int m){
char *q=s;
t+=m-1;
while(*q++=*t++);
return s;
}
int main(int argv,char *argc[]){
char t[300],s[300],m;
printf("Input a string: ");
fgets(t,300,stdin);
printf("Input an integer: ");
scanf("%d",&m);
printf("\nOutput is: %s\n",strmcpy(s,t,m));
return 0;
}
运行样例:
#include
#include
#include
void cl()// 清空缓冲区函数
{
char ch;
while((ch=getchar())!='\n'&&ch!=EOF);
}
int main()
{
int n,i,j,k,num;
char *p;
while(1)
{
printf("input n(n must be a natural number less than 10000):");
scanf("%d",&n);
cl();
if(n>10000)
{
printf("%d is out of range of values\n",n);
continue;
}
p=(char *)malloc(n*sizeof(char));//创建动态数组,每位置0,从下表为0的位开始报数,报道3就把值置一,直到报到1和2的下标相同就退出,解决
memset(p,0,n*sizeof(char));
for(num=0,i=0,j=0,k=0;1;i=(i+1)%n)
{
if(p[i]==0)
{
num++;//报数
if(num==3)//3就置1
{
p[i]=1;
num=0;
}
else if(num==1)
{
j=i;//记录1的下标
}
else if(num==2)
{
k=i;//记录2的下标
if(k==j)
break;
}
}
}
printf("Last No. Is :%d\n",j+1);
free(p);
}
return 0;
}
第一题代码
问题不难,但写起来很麻烦 十分太少,一个问题十分 俺就给全代码O(∩_∩)O
刚才没看到题目。。。为什么要用指针?!
指针通常是有结构体 数组 链表什么的时候才用的,这个完全用整型字符型完成的题目为何要用指针?毫无意义!
就算硬要把指针放进去也只能是这种程度:
char a[10];
*(a+5)='c';
而这根a[5]='c';完全没区别
这只是把[]运算符换成了另两个运算符来完成相同运算
能高效快速解决对应问题的程序才是好程序
这种题目不应该用指针,也起不到来练习指针的作用,练习指针最起码要从链表开始
第一题
#include
#include
int main(void)
{
int i = 0;
int n = 0;
int out = 0;
int sum = 0;
int str[1024] = {0};
printf("Input n(n<=10000):");
scanf("%d",&n);
for(i = 0;i < n;i++)
{
str[i] = 1;
}
i = 0;
while(out != n-1)
{
if(str[i] == 1)
{
sum++;
}
if(sum == 3)
{
str[i] = 0;
sum = 0;
out++;
if(i == n - 1 )
{
i = 0;
}
}
else
if(i
}
for(i = 0;i < n;i++)
{
if(str[i] == 1)
{
printf("Last No. is:%d",i+1);
break;
}
}
return 0;
}
第二题
#include
void delchar(char *s,char c)
{
char *p;
for(p=s;*s;s++)
if(*s!=c)
*p++=*s;
*p='\0';
}
int main(void)
{
char c,s[100];
printf("Input a string:");
gets(s);
printf("Input a char:");
scanf("%c",&c);
delchar(s,c);
printf("After deleted,the string is:%s\n",s);
return 0;
}
第三题正在写。求给分。