C语言题

1、有n个整数的数组,使其前面各数顺序向后移m个位置,最后m个数移到最前面

 1 /*##################################################################################################################
 2 #
 3 # 有n个整数的数组,使其前面各数顺序向后移m个位置,最后m个数移到最前面
 4 #
 5 ###################################################################################################################*/
 6
 7 #include "stdio.h"
 8 #include "stdlib.h"
 9
10 #define N 10
11
12 void move(int *a, int n, int m)
13 {
14     int *p,*q;//*p、*q指针变量
15     int temp;//零时变量
16
17     for(p=a+n-m; p<a+n; p++)
18     {
19         temp=*p;
20
21         for(q=p-1; q>=p+m-n; q--)
22             *(q+1)=*q;
23
24         *(q+1)=temp;
25     }
26
27 }
28
29
30 int main(void)
31 {
32     int a[N];
33     int m,i;
34
35     printf("请输入%d个数:\n",N);
36     for(i=0; i<N; i++)
37         scanf("%d",&a[i]);
38
39     printf("请输入需要向右移动的位数:");
40     scanf("%d",&m);
41
42     move(a, N, m);
43
44     printf("移动位置后数组元素的顺序:");
45     for(i=0;i<N;i++)
46         printf("%5d",a[i]);
47
48     system("pause");
49
50     return 0;
51 }

时间: 2024-08-06 00:32:59

C语言题的相关文章

有趣的C语言题

1 #include <stdio.h> 2 int main(void) 3 { 4 char buff[10]; 5 memset(buff,0,sizeof(buff)); 6 gets(buff); 7 printf("\n The buffer entered is [%s]\n",buff); 8 return 0; 9 } 这是一道有趣的C语言题,代码运行看似没错,却隐含着安全问题,问题在于gets()函数,这个函数是接收标准输入的一串字符串,并且没有检查字符

经典c语言题

1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 2. 写一个"标准"宏MIN,这个宏输入两个参数并返回较小的一个. #define MIN(A,B) ((A) <= (B) ?(A) : (B)) 5. 用变量a给出下面的定义 a) 一个整型数(An integer) b) 一个指向整型数的指针(A pointer to an integer)

关于定义顺序和内存分配的关系--记一道不严谨的C语言题

include<stdio.h> #include<iostream> int main() { char a[] = "123"; char b[] = "abcd"; if (a > b) { printf("a>b \n"); } else printf("a<b\n"); printf("%p\n %p\n", a, b); system("pau

c语言题中的一些陷阱

1.求下列两个数组的长度关系 characX[] = "abcdefg"; char acY[] ={ 'a', 'b','c', 'd', 'e', 'f', 'g' }; 解析:对于字符串来说,字符串结尾默认为'\0',所以acX[]的长度为8,而第二个数组的大小长度为7,而且因为没有用'\0'结尾,所以在屏幕上输出的值是不确定的. 2.求下列程序的输出结果 void example(characHello[]) { printf("%d\n", sizeof(

昨天面试遇到的一道C语言题

楼主之前是做C/C++开发的,今年转到java,hadoop方向了,所以很多C/C++的细节都有些模糊了,碰巧这次面试题中,就出了一道C指针的问题. 问题不算难,但楼主一时之间竟也想不起来答案了... 这道题给出了一小段程序,要你写出结果,程序如下: 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 5 void func(char *p) 6 { 7 p = (char *) mall

2020计算机二级C语言题库

[解析]软件设计中模块划分应遵循的准则是高内聚低偶合.模块大小规模适当.模块的依赖关系适当等.模块的划分应遵循一定的要求,以保证模块划分合理,并进一步保证以此为依据开发出的软件系统可靠性强,易于理解和维护.模块之间的耦合应尽可能的低,模块的内聚度应尽可能的高. #include <stdio.h> double fun(double e) { int i, k; double s, t, x; s=0; k=1; i=2; /**********found**********/ x=3.0/4

复试c语言题库错题

原文地址:https://www.cnblogs.com/xkf97/p/12587796.html

C语言学习篇:逗号运算符的应用

今天来说说我最近碰到的一道C语言题!虽然说这个知识点应该有大神说过了,但是为了确保我确实掌握啦,还是决定将这个写出来! 先看看该题目的要求:对于一个数n,如果是偶数,就把n砍掉一半:如果是奇数,把n变成 3*n+ 1后砍掉一半,直到该数变为1为止.请计算需要经过几步才能将n变到1,并且测试案例需要多组输入!(就直接说了吧,这个是九度oj里面的编号为1031的题目要求,大家有兴趣或者想刷题,感觉这是一个不错的选择) 首先看看我写的c语言代码(采用DEVc++编辑): 1 #include <std

C语言二分查找与冒泡排序

今天数据结构上机课,老师给了我们几个上个学期做过的C语言题,我惊讶的发现,之前会的算法,时间久了就忘记了,很尴尬,这也充分说明了 我C语言学习功底不够扎实.所以,在课后,我认认真真重新推了一遍,希望下次不会忘记了. 1 #include<stdio.h> 2 main() 3 { 4 int a[]={2,4,6,8,10,12,14,16,18,20}; 5 int left,right,mid,b;//定义变量 6 printf("请输入b的值:"); 7 scanf(